Relative/Absolute Position/Größe in OGL



  • Hi!

    Ich will grad in einem OGL-Game sowas wie ein Menü am oberen Bildschirmrand hinzufügen. Wenn ich dafür aber glVertex(); und so benutze, ist die Größe der Schrift/des gesamten Menüs abhängig von der Bildschirmauflösung. Gibts das ganze auch, dass das ganze Auflösungsunabhängig ist(also mit Pixelwerten angeben werden kann)?

    Thx.



  • Du bringst da wohl was durcheinander.
    Wenn du in absoluten Pixeln adressierst, dann ist es auflösungsabhängig.
    Eine der Größe 64x64 sieht bei 1280x1024 viel kleiner aus als bei 640x480.

    Es gibt z.B. WGL Funktionen, die dir Displaylisten für Schriften erstellen.
    Die sind dann auflösungsunabhängig, da sie aus Linien gezeichnet werden und so ganz normal die ganzen Transformationen durchlaufen können, ohne zu verwaschen.



  • Dann verwende eben eine virtuelle Auflösung und multipliziere die Positionswerte mit dem Quotient aus Auflösung und virtueller Auflösung.



  • Dr. C++ schrieb:

    Hi!

    Ich will grad in einem OGL-Game sowas wie ein Menü am oberen Bildschirmrand hinzufügen. Wenn ich dafür aber glVertex(); und so benutze, ist die Größe der Schrift/des gesamten Menüs abhängig von der Bildschirmauflösung. Gibts das ganze auch, dass das ganze Auflösungsunabhängig ist(also mit Pixelwerten angeben werden kann)?

    Thx.

    ???
    du machst schrift mit glVertex??, das ist ja ein haufen arbeit und unoetig. Und wenn dus damit machst, sollte das sklaieren kein problem sein.

    Der einzige fall wo das sklaieren ein problem ist, wenn du pixel schrift nimmst.
    (aber genau dann ist es pixelabhaenig (echte screen aufloesung))

    Schau mal bei nehe vorbei das sind ein paar schrift tutorials fuer ogl.

    von irgendeiner Aufloesung bist du immer abhaening, entweder von der echten screenaufloesung, oder von OGL fenstergroesee + Matrix (normal nimmst dafuer ortho her), aber alle diese daten koennen die print function fuettern und dann kann man alles brauchbar skalieren.



  • 1. @Flow_cplus: Ich hab geschrieben, dass ich irgendwas im Menü(nicht die Schrift!!) mit glVertex(); mache.

    2. @SeepSchrot: Gut, dann formuliere ich die Frage nochmal anders: Wie kann ich irgendwelche Pixel absolut adressieren. Denn wenn man in glVertex3f(); in irgendeinem Parameter 0.5f angibt, wird dies als Bildschirmauflösung*0.5 angenommen(bei einer Auflösung von 640: 320 und bei einer von 1024: 512). Was soll ich jetzt aber machen, wenn ich das ganze Pixelgenau angeben will?



  • BTW ist Schrift mit glVertex und ein Poly pro Zeichen wesentlich schneller und weniger Fehleranfällig als die blaBuildBitmapFont Variante von NeHe



  • Dr. C++ schrieb:

    Wie kann ich irgendwelche Pixel absolut adressieren. Denn wenn man in glVertex3f(); in irgendeinem Parameter 0.5f angibt, wird dies als Bildschirmauflösung*0.5 angenommen(bei einer Auflösung von 640: 320 und bei einer von 1024: 512). Was soll ich jetzt aber machen, wenn ich das ganze Pixelgenau angeben will?

    Dann benutze doch einfach deine Bildschirm- (bzw Viewport-)auflösung als Parameter für glOrtho, dann ist 1 Einheit = 1 Pixel.


Log in to reply