glTranslatef放置麻烦

时间:2013-12-29 00:56:51

标签: c glut

我对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测试了回调,它显示了反馈,但图像不会翻译。该计划是否需要特定的位置才能运作?我查了一下谷歌,但还没找到我要找的东西。

1 个答案:

答案 0 :(得分:1)

您还需要重置矩阵,否则翻译将每帧累积,直到您的内容在显示范围之外。

查找glLoadIdentity