Можно ли получить доступ к текстурной памяти OpenGL ES 2.0 непосредственно на встроенной платформе?

Я работаю над некоторым кодом GP-GPU на платформе на основе OMAP 3530, и меня ставит в тупик отсутствие функции glGetTexImage в openGL ES 2.0. Поскольку платформа использует встроенную память для графического процессора, мне было интересно, есть ли какой-нибудь хак, который я могу сделать, чтобы получить указатель непосредственно на выделенную текстуру в памяти. Таким образом, я мог считывать свои данные, не проталкивая их через фреймбуфер, который выбрасывает много данных.


person gct    schedule 20.10.2010    source источник


Ответы (1)


Насколько я знаю, нет способа сделать то, что вы описываете. Ближайшим и наиболее эффективным способом сделать это будет рендеринг в FBO, таким образом можно связать текстуру в качестве цветового буфера и использовать glReadPixels для возврата пикселей. Это по-прежнему требует чтения кадровых буферов из-за API glReadPixels. Однако есть несколько преимуществ использования FBO по сравнению с другими методами:

  1. вы можете создавать и использовать несколько FBO в одном и том же EGLContext (нет необходимости в переключении контекста, если вы, например, использовали PBuffer)
  2. вы можете совместно использовать буферы цвета (и глубины/трафарета) между FBO
  3. вы можете прикреплять текстуры непосредственно к FBO без необходимости выполнять операцию копирования
person csanta    schedule 01.05.2011