OpenGL将VBO保存到文件(Obj或其他)

时间:2011-04-23 00:12:00

标签: opengl 3d vbo

有没有人设法在运行时将OpenGL VBO导出为外部文件格式?我会感激任何正确方向的指示,因为我不知道我会怎么做。

3 个答案:

答案 0 :(得分:3)

OpenGL只是一个复杂的绘图API。缓冲区对象中的数据是任意的。它是你的程序,赋予它(以及OpenGL,BTW)的意义。有人必须将该数据上传到VBO(glBufferData来电)并通过向glDrawElementsglDrawArrays发出正确的来电来理解它。因此,无论数据来自何处,您最好从那里编写文件,避免绕过OpenGL。但是,如果程序中没有副本,则可以使用glGetBufferSubData获取缓冲区中的数据副本。

您的程序中没有数据副本的原因可能是您使用glMapBuffer将内存映射到程序中。您还可以使用这种映射(可选择只读访问)来检索缓冲区中的数据。

必须提供的某些逻辑一起理解它,您可以编写任何您喜欢的文件格式。但写文件的负担在你身上。

答案 1 :(得分:1)

如果您只想导出顶点和三角形数据,请查看以下格式:

这些是ascii格式,易于理解,写作简单。

显然,正如评论中所提到的,必须知道如何在VBO中编码数据,因为它只是一个字节数组。然后,我们的想法是获取VBO的内容,使用特定的应用程序逻辑将其解码为顶点和三角形,然后以其中一种文件格式导出这些数据。

答案 2 :(得分:1)

http://assimp.sourceforge.net/是一种方法。