glReadPixels не читает значения буфера глубины на iOS - PullRequest
5 голосов
/ 03 июля 2011

Не получается прочитать значения буфера глубины в 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?

Спасибо!

1 Ответ

5 голосов
/ 04 июля 2011

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

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

...