Я работаю над некоторым GP-GPU-кодом на платформе OMAP 3530, и меня затушевывает отсутствие функции glGetTexImage в openGL ES 2.0. Поскольку платформа использует встроенную память для GPU, мне было интересно, есть ли какой-нибудь хак, который я могу сделать, чтобы получить указатель непосредственно на выделенную текстуру в памяти. Таким образом, я мог бы читать свои данные, не проталкивая их через фреймбуфер, который отбрасывает много данных.Возможно ли получить доступ к текстурной памяти OpenGL ES 2.0 непосредственно на встроенной платформе?
1
A
ответ
2
Насколько я знаю, нет способа сделать то, что вы описали. Самый близкий и эффективный способ сделать это - это рендеринг для FBO, таким образом можно связать текстуру в виде цветового буфера и использовать glReadPixels, чтобы вернуть пиксели. Это все еще требует считывания Framebuffers из-за glReadPixels api. Есть несколько преимуществ использования кО по сравнению с другими методами, хотя:
- вы можете создать и использовать несколько FBOs в том же EGLContext (нет необходимости переключения контекста, если вы должны были использовать пиксельный буфер, например)
- вы можете поделиться цвет (и глубины/трафарета) буфера через кО
- вы можете прикрепить текстуры непосредственно к FBO без необходимости делать операцию копирования