我从glCopyTexImage2D()中弄错了纹理值。我将深度纹理附加到FBO,并在渲染过程中获得了它的值。我期望的结果如下图所示:(X:背景,Y:正确的像素)glCopyTexImage2D()中错误的纹理值
---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是固定的,我不知道为什么..
如果你将纹理附加到FBO,因此直接渲染它,为什么你要做glCopyTexImage2D? – datenwolf