glReadPixels не читает значения буфера глубины на iOS

Я не могу прочитать значения буфера глубины в OpenGL ES2 на iOS 4.3

afDepthPixels = (float*)malloc(sizeof(float) * iScreenWidth * iScreenHeight);
glReadPixels(0, 0, iScreenWidth, iScreenHeight, GL_DEPTH_COMPONENT, GL_FLOAT, afDepthPixels);

Мой буфер глубины в настоящее время привязан к месту и работает, однако эта функция не считывает ничего, кроме значений 0, и, кажется, возвращается почти сразу. Если я дам ему GL_RGBA, это займет довольно много времени и действительно вернет результаты. Эта функция просто не поддерживается в ES2 на iOS?

Спасибо!


person Kyle    schedule 03.07.2011    source источник


Ответы (1)


Как вы догадались, чтение буфера глубины не поддерживается в ES 2.x. Согласно справочной странице glReadPixels (прямо из Khronos) Единственными допустимыми значениями для «формата» в ES 2 являются GL_ALPHA, GL_RGBA и GL_RGB.

По памяти текстуры глубины поддерживаются в последних версиях iOS, поэтому должна быть возможность запустить пиксельный шейдер для преобразования буфера глубины во что-то, что вы можете прочитать как RGBA, если в противном случае вы зашли в тупик.

person Tommy    schedule 04.07.2011