OpenGL保存VBO到文件(对象或其他东西)



是否有人在运行时成功地将OpenGL VBO导出为外部文件格式?如果您能指点我,我将不胜感激,因为我不知道该怎么做。

OpenGL只是一个复杂的绘图API。缓冲对象中的数据是任意的。这是你的程序,赋予它意义(和OpenGL,顺便说一句)。必须有人将该数据上传到VBO (glBufferData调用),并通过向glDrawElementsglDrawArrays发出正确的调用来理解它。所以无论数据来自哪里,你最好从那里写一个文件,避免在OpenGL上走弯路。但是,如果您的程序中没有副本,那么您可以使用glGetBufferSubData来获取缓冲区中数据的副本。

在你的程序中没有数据副本的一个原因可能是,你使用glMapBuffer将缓冲区内存映射到你的程序中。您也可以使用这样的映射(最好是只读访问)来检索缓冲区中的数据。

和你必须提供的一些逻辑一起,你可以写任何你喜欢的文件格式。但是编写文件的重担在您身上。

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

  • VRML
  • STL

这些都是ascii格式,易于理解,易于编写。

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

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