将帧缓冲区附加到纹理错误
Posted
技术标签:
【中文标题】将帧缓冲区附加到纹理错误【英文标题】:Attaching Framebuffer to Texture error 【发布时间】:2014-08-19 20:30:01 【问题描述】:我正在尝试使用教程here 实现阴影映射,但是当我尝试使用此代码将帧缓冲区附加到纹理时它失败了。我的 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.
【问题讨论】:
glFramebufferTexture2D 需要 3.2+ 的 OpenGL 上下文 opengl.org/wiki/GLAPI/glFramebufferTexture 其实glFramebufferTexture2D
从 OpenGL 3 就已经存在了。它是在 3.2 中添加的 glFramebufferTexture
。 ***.com/questions/23593162/…
【参考方案1】:
是的,所以我忘记了glBindTexture
。我恨我自己。谢谢Hectigo!
【讨论】:
以上是关于将帧缓冲区附加到纹理错误的主要内容,如果未能解决你的问题,请参考以下文章