Android NDK glReadPixels () из закадрового буфера

Пишу игру с помощью 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). Я проверил координаты (x, y). Они в порядке. Комбинация GL_RGBA, GL_UNSIGNED_BYTE также должна поддерживаться любой реализацией opengl es 2.0, согласно документации opengl.

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

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

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

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


person Dirk    schedule 06.01.2012    source источник


Ответы (2)


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

person Dirk    schedule 14.01.2012

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

person Somabho    schedule 21.04.2015