OpenGL Сохранить VBO в файл (объект или что-то еще) - PullRequest
4 голосов
/ 23 апреля 2011

Кому-нибудь удалось экспортировать OpenGL VBO во внешний формат файла во время выполнения?Я был бы благодарен за любые указатели в правильном направлении, так как я понятия не имею, как бы я поступил об этом.

Ответы [ 3 ]

3 голосов
/ 23 апреля 2011

OpenGL - это просто сложный API рисования.Данные в объекте буфера являются произвольными.Это ваша программа, которая придает значение этому (и OpenGL, BTW).Кто-то должен был загрузить эти данные в VBO (glBufferData вызовы) и понять это, выполнив правильные вызовы на glDrawElements или glDrawArrays.Поэтому, где бы данные ни исходили, вам лучше написать оттуда файл, избегая обхода OpenGL.Однако, если у вас нет копии в вашей программе, вы можете использовать glGetBufferSubData для получения копии данных в буфере.

Причина, по которой у вас нет копии данных в вашей программе, может быть, что ваша память отобразила буфер в вашей программе, используя glMapBuffer.Вы также можете использовать такое отображение (предпочтительно с доступом только для чтения) для извлечения данных в буфере.

Вместе с некоторой логикой, которую вы должны предоставить, чтобы понять ее, вы можете написать любойформат файла вам нравится.Но бремя написания файла лежит на вас.

1 голос
/ 25 апреля 2011

http://assimp.sourceforge.net/ - это один из способов сделать это.

1 голос
/ 23 апреля 2011

Если вы просто хотите экспортировать вершины и треугольные данные, обратите внимание на следующие форматы:

Это форматы ASCII, которые легко понять и легко написать.

Очевидно, что, как упоминалось в комментариях, вы должен знать, как данные кодируются в VBO, поскольку это просто массив байтов.Тогда идея заключается в том, чтобы получить содержимое VBO, декодировать его в вершины и треугольники, используя специальную логику приложения, и экспортировать эти данные в один из форматов файлов.

...