【发布时间】:2018-06-22 16:33:15
【问题描述】:
我正在整理帧缓冲区,并在我的场景中制作了一面镜子。除了深度测试外,它工作正常。被卡住试图让它工作。 (当渲染到默认帧缓冲区时 - 深度测试工作正常)。将不胜感激任何帮助。这是代码:
glEnable( GL_DEPTH_TEST );
glViewport( 0, 0, 512, 512 );
unsigned int fbo;
glGenFramebuffers( 1, &fbo );
glBindFramebuffer( GL_FRAMEBUFFER, fbo );
unsigned int rbo;
glGenRenderbuffers( 1, &rbo );
glBindRenderbuffer( GL_RENDERBUFFER, rbo );
glRenderbufferStorage( GL_RENDERBUFFER, GL_DEPTH, 512, 512 );
glBindRenderbuffer( GL_RENDERBUFFER, 0 );
glFramebufferRenderbuffer( GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT,
GL_RENDERBUFFER, rbo ); //if remove this, mirror works but without depth test
glFramebufferTexture2D( GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
this->mirror->texturePack[0]->textureId(), 0 );
//render scene from mirror camera
glBindFramebuffer( GL_FRAMEBUFFER, 0 );
glViewport( 0, 0, this->width(), this->height() );
//render scene from main camera
【问题讨论】:
-
是的,我做到了,它通过了检查。
-
你确定吗?我测试了代码,但失败了。但是,如果我将
GL_DEPTH更改为GL_DEPTH_COMPONENT32它就可以了。 -
是的,我也将 GL_DEPTH 更改为 GL_DEPTH_COMPONENT32,否则它不会通过此检查。但是我的镜子还是不行。我也试过 DEPTH_COMPONENT16、DEPTH_COMPONENT24,也没有帮助。可能是错误出现在我的渲染代码中..
-
问题的代码sn-p没问题(
GL_DEPTH除外)。所以问题出在其他地方。
标签: c++ opengl framebuffer depth-testing qopenglfunctions