我正在尝试使用cocos2d和openGL进行纹理渲染。
我打电话后
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, _depthRenderBufffer)
我检查了状态,使用:
GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
并且结果状态为GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT
我还使用
检查了错误GLenum error = glGetError();
,结果为GL_INVALID_OPERATION
根据the documentation,GL_INVALID_OPERATION
的原因是:
我检查了framebuffer和renderbuffer,它们都不是0,但我不确定是否有任何其他rederbuffer对象具有相同的名称。
有人知道如何解决这个问题吗?
我正在使用的详细代码:
.....
GLint oldRBO;
glGetIntegerv(GL_RENDERBUFFER_BINDING, &oldRBO);
// generate FBO
glGenFramebuffers(1, &_FBO);
glBindFramebuffer(GL_FRAMEBUFFER, _FBO);
// associate texture with FBO
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, _texture.name, 0);
if (depthStencilFormat != 0) {
glGenRenderbuffers(1, &_depthRenderBufffer);
glBindRenderbuffer(GL_RENDERBUFFER, _depthRenderBufffer);
glRenderbufferStorage(GL_RENDERBUFFER, depthStencilFormat, (GLsizei)powW, (GLsizei)powH);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, _depthRenderBufffer);
GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER); // the status here will result in GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT
GLenum error = glGetError (); // the error here will be GL_INVALID_OPERATION
// I checked the value of _FBO, which was 1, and the value of _depthRenderBufffer was 2
.....
}