C++ 理解OpenGL glPushMatrix和GLPOPMARRIX

C++ 理解OpenGL glPushMatrix和GLPOPMARRIX,c++,opengl,opengl-compat,C++,Opengl,Opengl Compat,我是OpenGL新手,尝试渲染两个对象,但其中只有一个应该旋转。我从中学到,我可以使用glPushMatrix和glPopMatrix在一个对象上应用旋转,但我的不起作用 这是我的密码: void renderObjs(){ //glPushMatrix(); drawPyramid(0,0.7,0,0.289,0,0.167,-0.289,0,0.167,0,0,-0.33);//绘制三角形的函数 //glPopMatrix(); glPushMatrix(); glRotatef(0.3f,

我是OpenGL新手,尝试渲染两个对象,但其中只有一个应该旋转。我从中学到,我可以使用
glPushMatrix
glPopMatrix
在一个对象上应用旋转,但我的不起作用

这是我的密码:

void renderObjs(){
//glPushMatrix();
drawPyramid(0,0.7,0,0.289,0,0.167,-0.289,0,0.167,0,0,-0.33);//绘制三角形的函数
//glPopMatrix();
glPushMatrix();
glRotatef(0.3f,1.f,1.f,1.f);
拉丝金字塔(0-0.5,0.7-0.5,0-0.5,0.289-0.5,0-0.5,0.167-0.5,-0.289-0.5,0-0.5,0.167-0.5,0-0.5,0-0.5,-0.33-0.5);
glPopMatrix();
}
int main(){
//一些初始化
…这里是代码。。。
而(!glfwWindowShouldClose(窗口))
{
glClear(GL_颜色_缓冲_位| GL_深度_缓冲_位);
glMatrixMode(GLU模型视图);
renderObjs();
glfwSwapBuffers(窗口);
glfwPollEvents();
}
//其他有用的功能
…这里是代码。。。
}

但我的金字塔都不旋转。为什么会这样?我是否以错误的方式使用了
glPushMatrix
glPopMatrix

glRotatef
这样的矩阵转换操作,指定一个矩阵并将当前矩阵乘以新矩阵
glPushMatrix
将当前矩阵推送到矩阵堆栈上
glPopMatrix
从矩阵堆栈中弹出一个矩阵,并通过弹出的矩阵设置当前矩阵。角度的单位为度:

glPushMatrix();
glRotatef(30.0f,1.f,1.f,1.f);
拉丝金字塔(0-0.5,0.7-0.5,0-0.5,0.289-0.5,0-0.5,0.167-0.5,-0.289-0.5,0-0.5,0.167-0.5,0-0.5,0-0.5,-0.33-0.5);
glPopMatrix();

如果要连续旋转对象,需要增加每个图像中的旋转角度:

浮动角度=0.0f;
void renderObjs(){
//glPushMatrix();
drawPyramid(0,0.7,0,0.289,0,0.167,-0.289,0,0.167,0,0,-0.33);//绘制三角形的函数
//glPopMatrix();
glPushMatrix();
glRotatef(角度,1.f,1.f,1.f);
角度+=0.1f
拉丝金字塔(0-0.5,0.7-0.5,0-0.5,0.289-0.5,0-0.5,0.167-0.5,-0.289-0.5,0-0.5,0.167-0.5,0-0.5,0-0.5,-0.33-0.5);
glPopMatrix();
}

是的,这是一个多么愚蠢的错误:(但我已经解决了这个问题,他们对此并不担心……我只是想确保我一次只提出一个问题。不过,你的新答案解决了我的问题,非常感谢!