4

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

4

3 回答 3

3

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

您在程序中没有数据副本的一个原因可能是您使用glMapBuffer. 您还可以使用这样的映射(最好具有只读访问权限)来检索缓冲区中的数据。

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

于 2011-04-23T09:33:37.020 回答
1

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

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

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

于 2011-04-23T09:50:36.063 回答
1

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

于 2011-04-25T13:45:46.083 回答