OPENGL Texture2D直接/间接操作

时间:2014-12-22 18:16:25

标签: c++ opengl texture2d shadow-mapping

关注this tutorial,我正在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); 
  • N.B。我只使用OpenGL 2.1。

1 个答案:

答案 0 :(得分:0)

涂可以通过两种方式实现:

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

将shadowMapTexture附加到(写入)framebuffer并调用:

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

不要忘记先在上面的方法中禁用depth_test。