Android NDK glReadPixels () из закадрового буфера - PullRequest
0 голосов
/ 06 января 2012

Я пишу игру, используя Android ndk. Я использую выбор для выбора объектов в OpenGL. Для этого у меня есть объект закадрового кадрового буфера, в который я рендеринг, и я использую glReadPixels (), чтобы получить цвет от FBO. Затем цвет кодирует идентификатор выбранного объекта.

Проблема в том, что glReadPixels () не работает. Он просто не читает никаких значений цвета. Есть ли что-то, что я должен сделать, чтобы это работало?

  GLubyte pixel[4] = {0,0,0,0};
  glReadPixels(x, y , 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, (void *)pixel);

Вот как я пытаюсь использовать readpixels. Но результат всегда (0,0,0,0). Я проверил координаты (х, у). Они в порядке. Комбинация GL_RGBA, GL_UNSIGNED_BYTE также должна поддерживаться любой реализацией opengl es 2.0, согласно документации opengl.

Я прочитал кое-что о разрешениях, которые я должен установить в манифесте Android. Я пытался добавить разрешение, как это:

    <uses-permission android:name="android.permission.READ_FRAME_BUFFER"/>

но это тоже не сработало.

Кто-нибудь знает, каким может быть решение? или где я могу посмотреть?

Ответы [ 2 ]

1 голос
/ 14 января 2012

проблема была просто в потоке.все вызовы openGL должны выполняться в одном потоке.В противном случае это может привести к странному поведению, как это и хуже.

0 голосов
/ 21 апреля 2015

Предложение Дирка устранило мою проблему. Это был контекст потока.

...