ein OpenGL-Fenster Ändern der Größe bewirkt, dass es auseinander fallen
Frage
Aus irgendeinem Grund, wenn ich meine OpenGL-Fenster Größe ändern, fällt alles auseinander. Das Bild ist verzerrt, die Koordinaten nicht funktionieren, und alles einfach auseinander fällt. Ich bin Glut singen es einzurichten.
//Code to setup glut
glutInitWindowSize(appWidth, appHeight);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);
glutCreateWindow("Test Window");
//In drawing function
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glClear(GL_COLOR_BUFFER_BIT);
//Resize function
void resize(int w, int h)
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0, w, h, 0);
}
Die OpenGL-Anwendung ist streng 2D.
Dies ist, wie es aussieht, zunächst: http://www.picgarage.net/images /Corre_53880_651.jpeg
Dies ist, wie es aussieht, nachdem die Größenänderung: http://www.picgarage.net/ images / wrong_53885_268.jpeg
Lösung
Sie sollten nicht vergessen, die GLUT hook 'umformen' Ereignis:
glutReshapeFunc(resize);
Und setzen Sie Ihr Ansichtsfenster:
void resize(int w, int h)
{
glViewport(0, 0, width, height); //NEW
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0, w, h, 0);
}
Eine perspektivische Projektion würde das neue Seitenverhältnis zu berücksichtigen:
void resizeWindow(int width, int height)
{
double asratio;
if (height == 0) height = 1; //to avoid divide-by-zero
asratio = width / (double) height;
glViewport(0, 0, width, height); //adjust GL viewport
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(FOV, asratio, ZMIN, ZMAX); //adjust perspective
glMatrixMode(GL_MODELVIEW);
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow