如何在OpenGL中制作二维动画?

如何在OpenGL中制作二维动画?,opengl,animation,Opengl,Animation,如何在opengl中移动2d对象?机制是什么,例如,我们需要控制帧还是什么 欢迎使用某些代码段: 提前谢谢 OpenGL只是通过一些变换矩阵传递顶点数据,并将结果光栅化。任何高于此级别的操作都必须由您自己提供。简单的回答是,您可以通过修改modelview矩阵来移动对象。这可以通过多种方式完成,这取决于您的编码首选项以及您可用的opengl驱动程序版本 下面是一些部分代码,可以帮助您从正确的方向开始: 以下内容在Opengl 3.0+中已被弃用,但即使如此,仍然可以通过兼容性配置文件使用 //

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

欢迎使用某些代码段:


提前谢谢

OpenGL只是通过一些变换矩阵传递顶点数据,并将结果光栅化。任何高于此级别的操作都必须由您自己提供。

简单的回答是,您可以通过修改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、GLTRANSTEF和类似的固定函数管道接口都不推荐使用。如果您需要使用OpenGL 3.0或更高版本,您将需要使用相同类型的解决方案,但您需要自己的矩阵实现和矩阵堆栈。我认为讨论超出了你问题的范围


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

取决于你需要什么样的动画——我会把简单的移动对象想象成动画,作为转换的载体,每个元素都为相应的框架存储转换,而你需要的是用适当的投影模型VIEWVIEW矩阵将其相乘。如果您想获得比简单移动对象更奇特的效果,则始终可以在动画的每一帧更改其纹理:您所需要的只是处理称为“精灵表”的事情,而不是更改变换更改每个顶点的纹理坐标。