Я работаю над некоторым кодом GP-GPU на платформе на основе OMAP 3530, и меня ставит в тупик отсутствие функции glGetTexImage в openGL ES 2.0. Поскольку платформа использует встроенную память для графического процессора, мне было интересно, есть ли какой-нибудь хак, который я могу сделать, чтобы получить указатель непосредственно на выделенную текстуру в памяти. Таким образом, я мог считывать свои данные, не проталкивая их через фреймбуфер, который выбрасывает много данных.
Можно ли получить доступ к текстурной памяти OpenGL ES 2.0 непосредственно на встроенной платформе?
Ответы (1)
Насколько я знаю, нет способа сделать то, что вы описываете. Ближайшим и наиболее эффективным способом сделать это будет рендеринг в FBO, таким образом можно связать текстуру в качестве цветового буфера и использовать glReadPixels для возврата пикселей. Это по-прежнему требует чтения кадровых буферов из-за API glReadPixels. Однако есть несколько преимуществ использования FBO по сравнению с другими методами:
- вы можете создавать и использовать несколько FBO в одном и том же EGLContext (нет необходимости в переключении контекста, если вы, например, использовали PBuffer)
- вы можете совместно использовать буферы цвета (и глубины/трафарета) между FBO
- вы можете прикреплять текстуры непосредственно к FBO без необходимости выполнять операцию копирования
person
csanta
schedule
01.05.2011