Koristim DX7 tako da zaboravite D3DXFont i slično. Ne treba mi toliko mnogo - kontrola nad bold-om, bojom, veličinom i vertikalnim i horizontalnim alignment-om fonta u trenutku kada ga iscrtavam na površinu putem DirectDrawSurface7.DrawText.
Video sam da postoji zgodna procedura DirectDrawSurface7.SetFont(IFont) , čime ću sigurno rešiti problem sa veličinom, boldom itd., ali ne mogu nikako da nateram DX7 da radi sa alignmentom preko IFonta, a to mi je ključno u celoj priči.
Dakle, pitanje: Da li mogu da iskoristim IFont da kontrolišem vertikalni i horizontalni alignment ispisane reči?
Ako ne, da li mogu ikako da izračunam rect u kojem će se font prikazati (možda tome služi onaj opskurni GetFontMetrics?), jer ako bih to uspeo lako bih simulirao alignment tako što bih promenio X i Y teksta.
Alternativa kojoj već polako naginjem je da tekst u svojoj igri predstavljam korišćenjem teksture koja sadrži slike svih slova i znakova. Koristio bih DirectDraw7 da blitujem slovo po slovo na backbuffer. Pa me interesuje da li je neko već radio tako nešto i da li je isplativo uraditi to (sa stanovišta brzine izvršenja programa i vremena koje će mi trebati da nacrtam font i ispeglam sve bitne procedure).
I na kraju, oduvek me je interesovalo kako Windows uopšte radi sa vektorskim fontovima. Ako pozovem proceduru DirectDrawSurface7.DrawText da li DD poziva windows procedure za prikaz teksta ili se koristi GPU? Koliko su ove windows procedure brze? Najbitnija mi je u stvari informacija da li je metod lepljenja slova sa teksture brži od prepuštanja windowsu da računa prikazivanje vektorskih fontova?
Pošto sam primetio da mnoge igre, i to visokobudžetne, koriste svoje sopstvene procedure za ispis teksta, pretpostavljam da postoji razlog što se to tako radi u gamedev industriji (npr. možda je bitmap blit 100x brži od windowsovih procedura a ja to ne znam).
Brannigan