Hilfe mit richtiger Perspektive!



  • Tag,
    Ich hab mal ne frage zur Perspektive in OpenGL und zwar benutze ich die Einstellung aus dem tut von NeHe:

    gluPerspective( 45.0f, (float)X / (float)Y , 0.1f, 2000.0f );

    Wenn ich jetzt auf meinen Würfel frontal drauf schaue( Würfle ist aus linien zusammen gebaut ), dann müsste man doch theoretisch nur ein Rechteck sehen oder?
    Tu ich aber nicht, es sieht nämlich eher trichterförmig aus, also hat wie bei nem Pyramiedenstumpf. Bitte helft mir.

    Gruß Tobi.



  • gluPerspective() setzt eine räumliche darstellung, elemente weiter Hinten im Bild werden kleiner dargestellt. Wenn du das ausschalten willst musst du glOrtho() verwenden 😉



  • und wie?



  • Steht doch in der Hilfe drinnen. Du definierst einfach mit den sechs Parametern die Ebenen des Frustums (das in dem Fall eine Box ist).



  • aber das GluPerspective kann so stehen bleiben oder wie?
    und ich muss dann immer bevor ich nen würfel oder ein anderes object zeichnen will diesen aufruf machen?
    habt ihr evtl. irgendwo code wo ich mir das mal anschaun kann?

    Gruß Tobi.





  • na dann lag ich doch richtig mit meiner ausage oder?

    gluPerspective() bleibt wie gehabt und wenn ich den cude zeichnen will push ich erstmal die matrix den loadidentity dann glOrtho() mit den größen des cudes ausfüllen und dann popmatrix... so gehts oder?



  • boahr man... ich kriegs trotzdem net hin... sieht trotzdem noch aus wie nen pyramiedenstumpf außerdem ists dann kein würfel mehr sondern nur noch nen quarder



  • T0bi schrieb:

    na dann lag ich doch richtig mit meiner ausage oder?

    gluPerspective() bleibt wie gehabt und wenn ich den cude zeichnen will push ich erstmal die matrix den loadidentity dann glOrtho() mit den größen des cudes ausfüllen und dann popmatrix... so gehts oder?

    ?? Könntest du vorm Abschicken deiner Postings diese vielleicht nochmal durchlesen? Und es heißt Cube und nicht cude (schreib doch einfach Würfel).

    Zum Problem: Nein du braucht NICHT gluPerspective. Du hast in der Pipeline genau eine Worldmatrix, eine Viewmatrix und auch nur eine Projektionsmatrix. Du nimmst also entweder eine perspektivische Projektion ODER eine orthografische (oder was auch immer).



  • @cude, ich weiß das es cube heisst, man darf sich ja mal vertippen?

    und muss der aufruf der funktion für mein 2*2*2 würfel( 2 = 1 in positive richtiung und 1 in negative richtung ), dann so ausschaun?

    glOrtho( 0.0, 2.0, 0.0, 2.0, 0.0, 2.0 );

    und kann es sein das das die glTranslatef() nicht mehr geht?

    Gruß Tobi.

    PS: die OpenGl fenster maße: 640 * 480



  • ahaa ^^
    ich glaub so geht oder:

    void Zoom( int iLeft, int iRight, int iTop, int iBottom, float fZoom ) {
    
        glMatrixMode( GL_PROJECTION );
        glLoadIdentity( );
        glOrtho( iLeft * fZoom, iRight * fZoom, iTop * fZoom, iBottom * fZoom, -50.0f, 50.0f );
        glMatrixMode( GL_MODELVIEW );
    }
    


  • Die Größe des Fenster hat mit glOrtho nix zu tun, die brauchst du nur beim Setzen des Viewports.
    Bei glOrtho stell dir einfach vor du sitzt in einem Quaders und dann gibts du den Abstand zur linken Wand an, dann zur Rechten, dann zur ... .


Anmelden zum Antworten