Ich mache dieses OpenGL-Projekt für meine Computer Graphics-Klasse, wo ich ein Objekt anzeigen und ich es drehen und Sachen, die Sache ist, dass zu Beginn des Projekts wir glOrtho()
verwendet und es sah wirklich toll aus.Warum wird dieses Objekt anders gezeichnet, wenn ich glFrustum verwende?
Aber jetzt der Lehrer sagte, dass wir glFrustum()
für Perspektive verwenden, und wenn ich diese Funktion verwenden, wird das Objekt wie folgt gezeichnet und ich weiß wirklich nicht, warum dies geschieht:
Dies ist mein Code aus der init()
Funktion, in der alles verändert:
void init (void)
{
/* select clearing (background) color */
glClearColor (0.0, 0.0, 0.0, 0.0);
glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-100.0, 100.0, -60.0, 160.0, -100.0, 100.0);
//glFrustum(-100, 100 ,-100 ,100 ,1 , 40);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glRotatef(90,0,1,0);
}
Ich würde Ihre Hilfe zu schätzen wissen.
EDIT: Wenn ich glFRustum (-100, 100, -100, 100, 20, 200) verwende, sieht es so aus, als ob ich näher komme, aber was ist mit den linken, rechten, oberen und unteren Parametern? Sind sie mit diesen Werten in Ordnung?
Probieren Sie für ein näheres Nah-zu-Fern-Verhältnis aus, Sie erhalten ein genaueres Ergebnis der orthografischen Projektion. Versuchen Sie zum Beispiel glFRustum (-100, 100, -100, 100, 20, 150). 40 zu 1 ist extrem. – Victor
Ich nehme an, dass das Objekt in der Mitte der Szene ist, bei (0,0,0). Entfernen Sie sich vom Objekt 'glMatrixMode (GL_MODELVIEW); glLoadIdentity(); glTranslatef (0,0, -100,0f); glRotatef (90,0,1,0); ' – Rabbid76
@Victor: Das' far/near'-Verhältnis macht eine perspektivische Projektion in keiner Weise näher an eine orthonognale, noch ist ein Verhältnis von 40: 1 in irgendeiner Weise "extrem" . – derhass