[opengl] breedte (items in) displaylist

Pagina: 1
Acties:

  • chrisO
  • Registratie: Mei 2003
  • Laatst online: 10:06
Ik heb een display list waar in een aantal characters zitten (om tekst 3d op het scherm te zetten, de displaylist wordt gevuld met tekst dat ik verkregen met CreateFont) nu will ik dus de tekst zo plaatsen dat deze precies in het midden van het punt terecht komt dat ik aangeef. (nu wordt het meeste linkse character op dat punt afgedrukt) om de string precies in het midden te zetten moet ik dus weten hoe lang in pixels/units deze is....hoe doe ik dit nu? ik heb al gezocht naar of er een functie is om de breedte van items in een displaylist te bepalen maar niets gevonden...

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:02

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ja maar hoe kun je in hemelsnaam de breedte van een displaylist opvragen? Een displaylist is gewoon een lijst met opengl tekencommando's. Je kunt een display list maken die iets links van je scherm en iets rechts van je scherm tekent, of gewoon alles op dezelfde plek over elkaar heen. Het zijn gewoon stukjes opengl code die uitgevoerd wordt op het moment dat je de displaylist tekent, meer niet. Je kunt derhalve dus ook niet opvragen wat de "breedte" van zo'n list is, want dat is gewoon niet gedefinieerd.

Wat je moet doen is het font erbij pakken, en de string die je wilt tekenen, en vervolgens uitrekenen hoe groot die string is. OpenGL moet je dus volledig buiten beschouwing laten in deze

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • EfBe
  • Registratie: Januari 2000
  • Niet online
.oisyn schreef op 24 October 2003 @ 13:36:
Wat je moet doen is het font erbij pakken, en de string die je wilt tekenen, en vervolgens uitrekenen hoe groot die string is. OpenGL moet je dus volledig buiten beschouwing laten in deze
Nee dat is onzin. De wglUseFontOutlines() routine is erg gemakkelijk om 3D glyphs te creeeren van truetype fonts. Je krijgt dan display lists die je meteen kunt voeren aan je renderer en zo snel 3D tekst kunt maken.

De topicstarter moet even kijken naar de wglUseFontOutlines() routine in de MSDN library. Dan zal hij zien dat de laatste parameter, lpgmf, een GLYPHMETRICSFLOAT struct is waarin de breedte van een glyph EXACT is aangegeven. Dit sla je dus per character op in een datastructuur en hiermee kun je dus proportioneel je glyphs plaatsen in 3D space. Alle coordinates zijn gemapped naar 1.0 breedte, want je kunt de fonts resizen met een matrix @ rendertime.

[ Voor 6% gewijzigd door EfBe op 24-10-2003 14:04 ]

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com