我对glTranslatef有疑问。我的老师告诉我把电话放在display()中,定义如下:
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glUseProgram(program);
glBindBuffer(GL_ARRAY_BUFFER, vertexArrayBufferID);
glVertexAttribPointer(vPos, 3, GL_FLOAT, GL_FALSE, 0, BUFFER_OFFSET(0) );
glEnableVertexAttribArray(vPos);
glTranslatef(transX, transY, transZ);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, elementArrayBufferID);
glDrawElements(GL_TRIANGLES, numElements, GL_UNSIGNED_INT, BUFFER_OFFSET(0));
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
glutSwapBuffers();
}
transX,transY和transZ最初设置为0.0,并使用读取按下的键的回调glutKeyboardFunc()进行更改。我用cout测试了回调,它显示了反馈,但图像不会翻译。该计划是否需要特定的位置才能运作?我查了一下谷歌,但还没找到我要找的东西。
答案 0 :(得分:1)
您还需要重置矩阵,否则翻译将每帧累积,直到您的内容在显示范围之外。
查找glLoadIdentity