我從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