如何在OpenGL中进行2D动画?

时间:2010-09-16 03:26:31

标签: opengl animation

如何在opengl中移动2d对象?什么是机制,例如,我们需要控制帧或什么?

欢迎一些代码段:)

提前感谢!

2 个答案:

答案 0 :(得分:0)

OpenGL只是通过一些变换矩阵传递顶点数据并栅格化结果。任何高于你必须提供的水平。

答案 1 :(得分:0)

简短的回答是,您可以通过修改模型视图矩阵来移动对象。这可以通过多种方式完成,具体取决于您的编码首选项以及您可用的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或更高版本,您将需要使用相同类型的解决方案,但您需要自己的matricies实现和矩阵堆栈。我认为讨论超出了你的问题的范围。

如需进一步阅读,并开始使用OpenGL,我建议您查看nehe.gamedev.net。如果您想开始使用OpenGL 3.X,那么我建议您购买Opengl Superbible第5版。好书!