Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenGL和GLUT不理解_Opengl_Glut - Fatal编程技术网

OpenGL和GLUT不理解

OpenGL和GLUT不理解,opengl,glut,Opengl,Glut,我完全不理解opengl+glut的工作原理。。。。 请解释一下他为什么那样做=( 我有简单的代码 void display() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushMatrix(); ChessboardSurrogate.Draw(6,8,50, 0,0); // draw chessboard(6x8) in (0,0,0) edge per

我完全不理解opengl+glut的工作原理。。。。 请解释一下他为什么那样做=(

我有简单的代码

void display() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushMatrix(); ChessboardSurrogate.Draw(6,8,50, 0,0); // draw chessboard(6x8) in (0,0,0) edge per cell 50 glPopMatrix(); glPushMatrix(); //glutSolidCube(100); //!!!!! glPopMatrix(); glLoadIdentity(); gluLookAt( 0.0, 0.0, -testSet::znear*2, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); glMultMatrixf(_data->m); // my transformation matrix glutSwapBuffers(); } 无效显示() { glClear(GL_颜色_缓冲_位| GL_深度_缓冲_位); glPushMatrix(); 棋盘代理。绘制(6,8,50,0,0);//在每个单元格50的(0,0,0)边上绘制棋盘(6x8) glPopMatrix(); glPushMatrix(); //glutSolidCube(100);/!!!!! glPopMatrix(); glLoadIdentity(); gluLookAt(0.0,0.0,-测试集::znear*2, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); glMultMatrixf(_data->m);//我的变换矩阵 glutSwapBuffers(); } 我得到了预期的结果

然后我取消了对SolidCube(100)的注释。在任何情况下,我甚至会推/弹出当前矩阵,然后用身份矩阵覆盖它。我想我会看到与cude相同的结果图像…!我看到了什么…&*^-$%为什么

如果我添加代码

glRotatef(angleX,1.0,0.0,0.0); glRotatef(angleY,0.0,1.0,0.0); glRotatef(angleX,1.0,0.0,0.0); glRotatef(角度,0.0,1.0,0.0); 在狼吞虎咽之前,我会在现场看到棋盘。。。。。

这可能只是答案的一半,但你究竟为什么要在画图后设置矩阵?你希望它做什么

因此:

此外,始终确保设置了正确的矩阵:

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    gluLookAt()...
最后,除非Draw()方法更改modelview矩阵,否则Push/PopMatrix是无用的,应该避免使用(出于性能和可移植性的原因,因为它已被弃用)

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    gluLookAt()...