有没有人设法在运行时将OpenGL VBO导出为外部文件格式?我会感激任何正确方向的指示,因为我不知道我会怎么做。
答案 0 :(得分:3)
OpenGL只是一个复杂的绘图API。缓冲区对象中的数据是任意的。它是你的程序,赋予它(以及OpenGL,BTW)的意义。有人必须将该数据上传到VBO(glBufferData
来电)并通过向glDrawElements
或glDrawArrays
发出正确的来电来理解它。因此,无论数据来自何处,您最好从那里编写文件,避免绕过OpenGL。但是,如果程序中没有副本,则可以使用glGetBufferSubData
获取缓冲区中的数据副本。
您的程序中没有数据副本的原因可能是您使用glMapBuffer
将内存映射到程序中。您还可以使用这种映射(可选择只读访问)来检索缓冲区中的数据。
与必须提供的某些逻辑一起理解它,您可以编写任何您喜欢的文件格式。但写文件的负担在你身上。
答案 1 :(得分:1)
如果您只想导出顶点和三角形数据,请查看以下格式:
这些是ascii格式,易于理解,写作简单。
显然,正如评论中所提到的,必须知道如何在VBO中编码数据,因为它只是一个字节数组。然后,我们的想法是获取VBO的内容,使用特定的应用程序逻辑将其解码为顶点和三角形,然后以其中一种文件格式导出这些数据。
答案 2 :(得分:1)