将Framebuffer附加到纹理错误

时间:2014-08-19 20:30:01

标签: c++ debugging opengl graphics fbo

我正在尝试使用教程here实现阴影映射,但是当我尝试使用此代码将Framebuffer附加到纹理时,它会失败。我的OpenGL背景是3.1,我相信我有一个Intel 3000系列显卡。代码在2点失败。第一个失败是在glFramebufferTexture2D,它给出错误代码1282(不确定对应的枚举)。我相信这个错误导致代码中的断言assi失败。我尝试过类似问题的代码,但在这种情况下它们似乎不起作用。

glGenFramebuffers(1, &MObject::fbo);
glGenTextures(1, &MObject::shadowMap);
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, windowWidth, windowHeight, 0, GL_DEPTH_COMPONENT, GL_FLOAT, NULL);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
glBindFramebuffer(GL_FRAMEBUFFER, MObject::fbo);
glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, MObject::shadowMap, 0);
GLenum  err = glGetError(); // Error code: 1282
glDrawBuffer(GL_NONE);
glReadBuffer(GL_NONE);
GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
assi(status == GL_FRAMEBUFFER_COMPLETE, "FBO error!"); // Expression is false, abort called.

1 个答案:

答案 0 :(得分:1)

是的,所以我忘了glBindTexture。我恨我自己。谢谢Hectigo!