Рисование и загрузка текстуры GL_DEPTH_COMPONENT - PullRequest
1 голос
/ 07 мая 2010

Я пытаюсь загрузить буфер глубины из файла и скопировать его в буфер глубины вместо очистки каждого кадра.

В любом случае, я немного новичок в opengl, поэтому я просто попытался загрузить свою текстуру так:

glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, width, height, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, DepthData);

и я пытаюсь нарисовать это так:

glBindTexture(GL_TEXTURE_2D, DepthTexture);
glColorMask(FALSE, FALSE, FALSE, FALSE);

glBegin(GL_QUADS);

    glTexCoord2f(0.0f, 0.0f); glVertex2f(0.0f, 0.0f);
    glTexCoord2f(0.0f, 1.0f); glVertex2f(0.0f, 1.0f);
    glTexCoord2f(1.0f, 1.0f); glVertex2f(1.0f, 1.0f);
    glTexCoord2f(1.0f, 0.0f); glVertex2f(1.0f, 0.0f);

glEnd();

Я пытался загрузить глубинный буфер с каждым значением, равным 1,0, и все, что я пытался нарисовать, скрылось, хотя этого не должно было быть.

что мне делать? Кстати, я не хочу использовать glDrawPixels

1 Ответ

4 голосов
/ 07 мая 2010

Вы действительно рисуете текстурированный квад, который не обновляет буфер цвета и все еще обновляет буфер глубины.Тем не менее, значения, которые вы пишете, являются фактическими значениями глубины полигонов, а не значениями, найденными в текстуре!Вот почему все заканчивается z-отбраковкой.

Самый простой способ достичь желаемого - использовать собственный шейдер и записать собственное значение gl_FragDepth, считывая его из вашей текстуры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...