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