2015-06-04 6 views
0

Почему glMapBuffer отсутствует в opengl es 2.0? Кто мы можем получить доступ к данным буфера, чтобы эффективно его изменить? Только glBufferSubData - лучший способ изменить буфер?glMapBuffer отсутствует в opengl es 2

+0

на какой платформе вы работаете? Попробуйте найти расширение, чтобы получить такую ​​функциональность, как «#import ». –

+0

@MaticOblak Я не нашел его в документах OpenGL ES 2.0. Вы думаете, что это не пропало? – Narek

+0

Я думаю, он должен быть там, но я не 100%. –

ответ

2

glMapBuffer является extension в ES 2.0, а не частью спецификации ядра. Подавляющее большинство устройств (все iOS и большинство Andriod) предлагают расширение, но это не требуется. Единственным основным способом загрузки данных VBO является glBufferData, или glBufferSubData.

+0

Но он является родным для OpenGL 2.0? – Narek

+0

он был представлен в OpenGL 1.5, так что да, это ядро ​​в GL 2.0. – MuertoExcobito

3

Необходимо удлинить GL_OES_mapbuffer. Это обеспечивает glMapBufferOES и glUnmapBufferOES.

Для отображения поддиапазонов имеется отдельное расширение: GL_EXT_map_buffer_range.

+0

glMapBufferRange также полезен не только для отображения поддиапазонов - у него есть новые флаги использования, поэтому вам не нужно вручную указывать драйвер для сирота предыдущего буфера с помощью glMapBuffer (NULL) –

1

«Лучший» способ передачи вашего буфера зависит от шаблонов доступа к данным и используемого вами драйвера OpenGL. Вот большая статья о выборе между многими вариантами даже на OpenGL ES 2.0:

http://hacksoflife.blogspot.com/2013/04/there-must-be-50-ways-to-draw-your.html

Вот новая статья о подобных методах. Кажется, что стойкая отображение является внедренным от OpenGL 4.5:

https://www.opengl.org/wiki/Buffer_Object_Streaming

Наконец, книга «Open GL Insights» имеет целую главу по этому вопросу, который включен в свободном предварительный просмотр:

http://www.seas.upenn.edu/~pcozzi/OpenGLInsights/OpenGLInsights-AsynchronousBufferTransfers.pdf

Смежные вопросы