Неправильные значения текстуры в glCopyTexImage2D () - PullRequest
0 голосов
/ 22 августа 2011

Я получил неправильные значения текстуры от glCopyTexImage2D ().Я прикрепил текстуру глубины к FBO и получил ее значение в проходе рендеринга.Я ожидал результат, как показано ниже: (x: фон, y: правильный пиксель)

---yyyyyyyyyyyyyyyyyyyy-----
-----------yyyyyyyyyyy------
yyyyyy----------y-----------
yyyyyyyyyy-------y----y-yyyy
yyyyyyyyyyyyyyyyyyyyyy------

, но мой результат такой:

---yyyyyyyyyyyyyyyyyyyy-----
-----------yyyyyyyyyyy------
yyyyyy----------y-----------
----------------------------
----------------------------

От половины текстуры доконец, фоновые пиксели только представлены.конечно, от верхнего левого до половины я получил правильный результат.

код создания текстуры ниже:

glGenTexture(1, &tex);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, tex);
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_TEXTURE, w, h, 0, GL_DEPTH_TEXTURE, GL_FLOAT, 0);

и в коде рендеринга

glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, tex);
glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_TEXTURE, 0, 0, w, h, 0);

Есть ли ошибка в glCopyTexImage2D?w и h исправлены, и я не знаю почему ..

1 Ответ

1 голос
/ 22 августа 2011

Во-первых, я понятия не имею, как то, что вы опубликовали, компилируется, поскольку нет такой вещи, как GL_DEPTH_TEXTURE.Однако есть GL_DEPTH_COMPONENT.

Во-вторых, вы всегда должны использовать форматы с глубиной размера.Поэтому вместо GL_DEPTH_COMPONENT используйте GL_DEPTH_COMPONENT24 для получения 24-битного буфера глубины.Обратите внимание, что формат передачи пикселей (аргумент третий от конца) все еще должен быть GL_DEPTH_COMPONENT.

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

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