[OpenGL]Ortho -> Kooardinatenproblem



  • Hab ein kleines Problem mit dem Orthomode beo OpenGL. Mit dem folgenden Code ist immer die x-Achse nach unten und die y-Achse dezent nach links verschoben. Eigentlich müßte x=0 und y=0 genau oben in der linken ecke sein.
    Wäre über Hilfe sehr Dankbar!

    void OGL_Engine::ENG_SetOrtho(int width, int height)
    {
    	if(height == 0)height = 1;
    	glViewport(0, 0, width, height);
    
    	glMatrixMode(GL_PROJECTION);
    	glLoadIdentity();
    	glOrtho(0.0f, width, height, 0.0f, -1.0f, 100.0f);
    	glMatrixMode(GL_MODELVIEW);
    	glLoadIdentity();
    }
    

    Mit dem zeichne ich dann zb die Objekte, aber sie sind nicht an der gewümschten Stelle:

    glLoadIdentity();
    glBegin(GL_LINES);
          glColor3ub(255, 0, 0);
    	for(int x = 0; x <= ref.height; x = x + 100)
    	{
    		glVertex2d(0, x);
    		glVertex2d(ref.width, x);
    	}
    glEnd();
    

    Über width und height übergeb ich die Auflösung, zb 640x480 etc. Aber bei jeder Auflösung ist die Verschiebung drinne...???
    ref.height und ref.width beinhaltet die Aktuelle auflösung



  • Versuch's mal so:

    glOrtho(-0.375, width-0.375, height-0.375, -0.375, -1.0, 100.0);
    

    Davon ab macht es deinen Code nicht direkt deutlicher wenn du die Variable für die y-Koordinate x nennst... und dass ref.height & ref.width nicht mehr auf dem Schirm sind ist dir auch klar, ja?



  • Hab jetzt deins versuchst, aber die Wirkung ist die selbe wie bei mir -> Die Verschiebung ist immer noch genauso stark da wie vorher. Nur die auf 0 Gezeichnete Linie seh ich nicht mehr.
    Das ref.height und ref.width auserhalb vom Bildschirm sind ist mir schon bewußt...

    Das ich x mit y vertauscht hab ist ein fehler meinerseits, hab vergessen ihn zu korrieren...


Anmelden zum Antworten