如何在OpenGL中制作2D动画?

ergxz8rk  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(224)

如何在OpenGL中移动2D对象?其机制是什么?例如,我们需要控制帧吗?
欢迎提供示例代码片段!

qpgpyjmq

qpgpyjmq1#

简短的回答是,你可以通过修改ModelView矩阵来移动一个对象,这可以通过几种方式来完成,这取决于你的编码偏好和你所拥有的OpenGL驱动程序的版本。
下面是一些部分代码,帮助您朝着正确的方向开始:
OpenGL 3.0+中不赞成使用以下功能(但即使这样,仍然可以通过兼容性配置文件使用)。

// 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();
}

对于OpenGL 3.0及更高版本,glPushMatrixf()、glPopMatrixf()、glTranslatef()和类似的固定函数管道接口都已弃用。如果您需要使用OpenGL 3.0或更高版本,您可能希望使用相同类型的解决方案,但您需要自己实现矩阵和矩阵堆栈。我认为这些讨论超出了您的问题范围。
要进一步阅读,并开始使用OpenGL,我建议您查看nehe.gamedev.net。如果您想开始使用OpenGL 3.X,那么我建议您购买OpenGL超级圣经第5版。这是一本很棒的书!

相关问题