OPENGL Texture2D манипулирование прямо / косвенно

Следующий этот урок, Я выполняю картографирование теней на 3D-сцене. Теперь хочу
манипулировать необработанными тексельными данными shadowMapTexture (см. выдержку ниже) перед
применяя это с помощью расширений ARB

//Textures
GLuint shadowMapTexture;
...
...

**CopyTexSubImage2D** is used to copy the contents of the frame buffer into a
texture. First we bind the shadow map texture, then copy the viewport into the
texture. Since we have bound a **DEPTH_COMPONENT** texture, the data read will
automatically come from the depth buffer.

//Read the depth buffer into the shadow map texture
glBindTexture(GL_TEXTURE_2D, shadowMapTexture);
glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, shadowMapSize, shadowMapSize);
  • Нотабене Я использую только OpenGL 2.1.

0

Решение

Ту можно сделать двумя способами:

float* texels = ...;
glBindTexture(GL_TEXTURE_2D, shadowMapTexture);
glTexSubImage2D(GL_TEXTURE_2D, 0, x,y,w,h, GL_DEPTH_COMPONENT, GL_FLOAT, texels);

или же

Присоедините ваш shadowMapTexture к (записи) фреймбуфера и вызовите:

float* pixels = ...;
glRasterPos2i(x,y)
glDrawPixels(w,h, GL_DEPTH_COMPONENT, GL_FLOAT, pixels);

Не забудьте сначала отключить параметр глубины_тестирования в вышеуказанном методе.

0

Другие решения


По вопросам рекламы [email protected]