1 != 1 Pixel



  • irgendwie versteh ich das nicht ganze
    wenn ich das ganze orthogonal mache: glOrtho(0, 640, 480, 0, 1, 1);
    dann dürften Objekte die weiter hinten sind ja nicht kleiner sein
    soweit stimmt das ganze ja auch

    nur wenn ich um zB ein Vierreck zeichnen will:

    glBegin(GL_QUADS);
    glVertex2f(0.5,0.5);
    glVertex2f(  0,0.5);
    glVertex2f(  0,  0);
    glVertex2f(0.5,  0);
      glEnd();
    

    dann geht eine Einheit gleich über den halben Bildschirm (also von der Mitte bis zum Rand)
    aber wie erreiche ich das bei einer orthogonalen Matrix nun, dass eine "Einheit" ein Pixel ist
    ich will nämlich eigentlich einfach nur auf die einzelnen Pixel zugreifen können,
    aber das scheint ja bei OpenGL nicht so einfach zu sein
    wenn DirectX nur auf Linux laufen würde...



  • Du bist im orthogonalen Modus, okay?
    Dein Bildschirm in Pixel eingeteilt, von 0 bis 640 und 0 bis 480.

    Und du willst jezt das Qudrat an Pixel 0.5 zeichnen? Wie soll das gehen?

    Du musst ganze Zahlen nehmen.



  • nein du verstehsts nicht
    so wie du das sagst will ich es ja haben
    aber so ist es komischerweiße nicht
    0,5 ist bei mir genau 1/4 des Fensters 1 ist genau die hälfte
    aber warum? das muss man doch ändern können
    ich will nicht die ganze Zeit mit Kommazahlen arbeiten müssen



  • Du musst den Viewport mit 640x480 initialisieren. Ausserdem muss der Aufruf von gluPerspective entsprechend angepasst werden.



  • Nick H. schrieb:

    0,5 ist bei mir genau 1/4 des Fensters 1 ist genau die hälfte
    aber warum?

    Weil nun mal standardmässig der Nullpunkt in der Mitte ist. Rechts und runter geht's auf der X- bzw. Y-Achse bis +1. Links und rauf geht's auf diesen bis -1 jeweils.
    Entsprechend sind die Einheiten bei unterschiedlicher Auflösung auch unterschiedlich lang.

    Nick H. schrieb:

    das muss man doch ändern können

    Klar. Du kannst doch Koordinaten-Umrechnungs-Matrizen darüber jagen soviel wie Du willst...



  • Cpp_Junky schrieb:

    Du musst den Viewport mit 640x480 initialisieren. Ausserdem muss der Aufruf von gluPerspective entsprechend angepasst werden.

    nöö, er wills ja orthogonal



  • Um den Orthoscreen zu erstellen, benutze ich

    glOrtho(0, WND_X, 0, WND_Y, -1, 1);
    

    (wnd = window, huh?)

    glBegin(GL_QUADS);							
    	glVertex2i(0,0);						
    	glVertex2i(size,0);					
    	glVertex2i(size,size);				
    	glVertex2i(0,size);	
    glEnd();
    

    Erstellt ein Quadrat mit der Größe von size. Man beachte die Funktion glVertex2i.

    ::edit::
    Der Punkt 0|0 ist unten links, btw.



  • Um den Orthoscreen zu erstellen, benutze ich
    C/C++ Code:
    glOrtho(0, WND_X, 0, WND_Y, -1, 1);
    (wnd = window, huh?)

    ich wollte halt das DirectX Koordinaten-System mit Ursprung links oben
    deswegen ist meins anders

    Man beachte die Funktion glVertex2i.

    die macht aber keinen Unterschied ausser das sie Integer statt Floats nimmt
    1 ist bei mir dann immernoch der halbe Bildschirm

    die Frage war aber wie ich das ändern kann



  • Nick H. schrieb:

    ich wollte halt das DirectX Koordinaten-System mit Ursprung links oben
    deswegen ist meins anders

    Achso okay, ich bin mir jetzt aber auch gar nicht sicher, ob das überhaupt funktioniert?

    Nick H. schrieb:

    Man beachte die Funktion glVertex2i.

    die macht aber keinen Unterschied ausser das sie Integer statt Floats nimmt
    1 ist bei mir dann immernoch der halbe Bildschirm

    Weiß ich nicht, mir war nur der Unterschied von f und i aufgefallen. Hab gedacht, dass das vielleicht Einfluss hat.



  • doch das mit dem DirectX Koordinaten System ist nicht das Problem
    habs auch schon mit dem normalen probiert, aber irgendwas läuft da schief
    hat von euch noch niemand ne orthogonale Matrix für OpenGL benutzt?



  • http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=21

    Schau dir das einfach an, da steht alles.



  • ich hab jetzt ewig rumgesucht
    auch bei dem Link

    aber ein 1 ist bei mir immer ganz genau die hälfte des Fensters
    auch wenn ich die Größe änder

    da scheint MS echt mal was besser gemacht zu haben
    da kann man so schön einfach an die Pixel

    hat jemand vielleicht noch irgendeine Idee?



  • Ich glaub, du stellst dich einfach zu doof an :p

    http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=17

    hier noch ein Ortho-Beispiel



  • das glaub ich auch
    aber ich lad genau den gleichen Viewport und Matrizen wie in den Beispielen
    bei mir bleibt 1 bei einem Vektor immer genau die Strecke von der Mitte bis zum Rand

    egal ich probiers mal mit dem neuen Beispiel danke!



  • na endlich, bin ich doof
    ich dachte die Reihenfolge bei Resize wäre egal 😃

    ein Problem gibts allerdings doch noch:
    der Ursprung ist plötzlich links oben, dabei wollte ich den jetzt eigentlich in der Mitte haben
    und zwar so das y nach oben und x nach rechts geht

    hier ist der Code: http://cemoi.ce.funpic.de/gl.txt
    kann mir kurz jemand sagen was ich dafür ändern muss



  • Nick H. schrieb:

    na endlich, bin ich doof
    ich dachte die Reihenfolge bei Resize wäre egal 😃

    ein Problem gibts allerdings doch noch:
    der Ursprung ist plötzlich links oben, dabei wollte ich den jetzt eigentlich in der Mitte haben
    und zwar so das y nach oben und x nach rechts geht

    hier ist der Code: http://cemoi.ce.funpic.de/gl.txt
    kann mir kurz jemand sagen was ich dafür ändern muss

    Versuch mal für glOrtho andere Parmeter zu übergeben. Ich würde jetzt mal tippen auf -320,320,120,-120 oder sowas in der Art. Du verstehst was ich meine 😃

    Hier nochmal die Doku dazu: http://www.rush3d.com/reference/opengl-bluebook-1.0/ch05.html#id5511492

    mfg.



  • habs hinbekommen
    die Werte waren echt falsch
    man muss den Abstand zu den Rändern angeben

    aber was hat es dann mit den letzten beiden Parametern auf sich?



  • Near und Far Clipping Plane



  • das wusst ich auch, aber was heißt das?



  • ...the starting point and ending point for how deep we can draw into the screen.


Anmelden zum Antworten