// you'll need a game loop to make some opengl calls each frame
while(!done)
{
// clear color buffers, depth buffers, etc
initOpenglFrame();
glPushMatrixf();
glTranslatef(obj->getX(), obj->getY(), obj->getZ());
obj->draw();
glPopMatrixf();
// move the object 0.01 units to the left each tick
obj->setX(obj->getX() + 0.01);
// flush, swap buffers, etc
finishOpenglFrame();
}
1条答案
按热度按时间qpgpyjmq1#
简短的回答是,你可以通过修改ModelView矩阵来移动一个对象,这可以通过几种方式来完成,这取决于你的编码偏好和你所拥有的OpenGL驱动程序的版本。
下面是一些部分代码,帮助您朝着正确的方向开始:
OpenGL 3.0+中不赞成使用以下功能(但即使这样,仍然可以通过兼容性配置文件使用)。
对于OpenGL 3.0及更高版本,glPushMatrixf()、glPopMatrixf()、glTranslatef()和类似的固定函数管道接口都已弃用。如果您需要使用OpenGL 3.0或更高版本,您可能希望使用相同类型的解决方案,但您需要自己实现矩阵和矩阵堆栈。我认为这些讨论超出了您的问题范围。
要进一步阅读,并开始使用OpenGL,我建议您查看nehe.gamedev.net。如果您想开始使用OpenGL 3.X,那么我建议您购买OpenGL超级圣经第5版。这是一本很棒的书!