附加深度缓冲区的纹理

时间:2014-09-22 19:52:27

标签: ios opengl-es textures framebuffer

当我取消注释这一行时:

glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, _depthMapTexture, 0);

我收到错误0x8cd6(不完整的帧缓冲区)。 我的纹理是:

  glActiveTexture(GL_TEXTURE5);
  glGenTextures(1, &_bestSADTexture);
  glPixelStorei(GL_PACK_ALIGNMENT, 1);
  glBindTexture(GL_TEXTURE_2D, _bestSADTexture);
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
  glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT16, width, height, 0, GL_DEPTH_COMPONENT16, GL_HALF_FLOAT_OES, NULL);

我无法在Google上找到任何参数组合或任何使其有效的示例。有什么建议吗?

更新

找到了组合:

glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, width, height, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, NULL);

调试器说这是一个24位缓冲区。值只在0和1之间,但我需要一个完整的范围,我不能使用浮动纹理吗?

0 个答案:

没有答案