我正在 Maya 中创建一个一分钟长的动画,我打算在 OpenGL 中渲染它。我这样做是作为大学的一个项目。
场景中只有一张人脸做出扭曲的表情。网格有大约 2200 个四边形面。
我找到了一个将 Wavefront 对象文件转换为顶点和法线数组的 perl 脚本。我打算在 Maya 中以 24fps 的速度制作动画,然后将每一帧中的网格导出到 Wavefront 对象文件,然后通过 perl 脚本运行所有这些,这将为我提供顶点和法线数组。
因此,为了测试可行性,我将 Maya 中的两帧动画转换为目标文件,并通过脚本运行它(调整后),这给了我数千次glVertex
调用glNormal
。我将所有这些复制到我的 C++ 程序并编译它。它运行顺利。
考虑到当我将 60sec*24frame 的glVertex
和glNormal
语句复制到程序中时程序会有多大,我想尝试使用 VBO。所以,我读到了它,但我不太了解它的实现。
所以我的第一个问题是:在这种情况下实现 VBO 的最佳方法是什么?
我正在考虑顶点和法线的二维数组,每帧一个;GL_STATIC_DRAW_ARB
对于glBufferDataARB()
. _
假设我的动画是 5 帧长,我的面部网格由 2200 个顶点和法线组成,那么我将创建:
GLfloat face_vertices[5][2200] = {.....};
GLfloat face_normals[5][2200] = {.....};
我的第二个问题:上面的代码会在 VBO 上工作或表现得“好”吗?
另外,我不确定这些信息是否重要,但我的计算机运行在 Intel 82945G 显卡上,而且我很确定我大学的 PC 也运行在 Intel 上。只是想我会提到这一点。
更新
性能也是一个问题。