opengl glulookat奇怪的行为

时间:2013-10-10 23:58:58

标签: opengl glulookat

有人可以解释一下为什么我的代码中的相机会在每次onIdle回调中移动吗?我没有改变任何参数,所以在我看来它应该一直显示相同。仍然无法自己解决,谢谢你的帮助

#include <iostream>
#include <math.h>
#include "gl/glut.h"
#include <windows.h>

using namespace std;

void Display(void){

    glMatrixMode(GL_PROJECTION);
    glFrustum(-0.5, 0.5, -0.5, 0.5, 0.8, 2);

    gluLookAt (0,0,1,  0,0,0,  0,1,1);

    glMatrixMode(GL_MODELVIEW);
    glClear(GL_COLOR_BUFFER_BIT| GL_DEPTH_BUFFER_BIT);

    glutWireCube(0.2);

    glFlush();

}


void onIdle(void){

    Sleep(1000);
    glutPostRedisplay();

}

int main(void){

glutInitDisplayMode(GLUT_DEPTH | GLUT_RGBA);
glEnable(GL_DEPTH_TEST);
glutCreateWindow("camera");

glutDisplayFunc(Display);
glutIdleFunc(onIdle);
glutMainLoop();
return 0;
}

1 个答案:

答案 0 :(得分:0)

这是因为您不会在每次渲染后或每次渲染开始时重置矩阵。

基本上,您需要调用glLoadIdentity();来重置当前选定的矩阵,但将矩阵的值设置为默认值(Matrix Identity)。