Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenGL:如何解除渲染缓冲区的绑定_Opengl_Unbind_Fbo - Fatal编程技术网

OpenGL:如何解除渲染缓冲区的绑定

OpenGL:如何解除渲染缓冲区的绑定,opengl,unbind,fbo,Opengl,Unbind,Fbo,使用帧缓冲区对象,我为颜色和深度创建了渲染缓冲区,并将它们附加到FBO //set up color buffer for rendering glGenRenderbuffers(1, &my_fbo_params.color_rb[i]); glBindRenderbuffer(GL_RENDERBUFFER, my_fbo_params.color_rb[i]); glRenderbufferStorage(GL_RENDERBUFFER, GL_RGB565, width, he

使用帧缓冲区对象,我为颜色和深度创建了渲染缓冲区,并将它们附加到FBO

//set up color buffer for rendering
glGenRenderbuffers(1, &my_fbo_params.color_rb[i]);
glBindRenderbuffer(GL_RENDERBUFFER, my_fbo_params.color_rb[i]);
glRenderbufferStorage(GL_RENDERBUFFER, GL_RGB565, width, height);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER,           my_fbo_params.color_rb[i]);

//set up depth buffer
glGenRenderbuffers(1, &my_fbo_params.depth_rb[i]);
glBindRenderbuffer(GL_RENDERBUFFER, my_fbo_params.depth_rb[i]);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, width, height);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, my_fbo_params.depth_rb[i]); 
这一切都很好,运行良好。 当我继续下一个场景时,我希望保留颜色缓冲区,但分离并取消绑定深度缓冲区。 我了解到以下代码将执行分离:

glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, 0); 

但是如何在保持颜色缓冲区完好无损的情况下解除深度缓冲区的绑定?

上述代码将解除cdepth缓冲区的绑定并保持颜色缓冲区完好无损,那么您遇到的问题是什么呢。另一件事:为什么你真的需要这样做?尝试实现一个基准框架,我需要在其中进行屏幕外渲染,是否需要深度/颜色/模具缓冲区可能取决于测试规范。那么,你是说下面的内容可以解除束缚吗?glFramebufferRenderbuffer(GL_帧缓冲区,GL_深度附件,GL_RENDERBUFFER,0);对于下面的线程,我认为上面的调用将进行分离,但不会解除绑定。实际的“解绑”是完全不必要的操作。深度缓冲区将被分离。无论您以何种方式绑定到
GL_RENDERBUFFER
目标的渲染缓冲区都无关紧要,调用
glRenderbufferStorage
和friends时除外。我认为您对绑定renderbuffer的实际含义有一些误解。我将有一些启用深度和禁用深度的测试用例。对于禁用深度的测试,我希望解除深度渲染缓冲区的绑定(并且不希望释放/删除深度渲染缓冲区分配的内存,因为我可能需要为即将到来的测试重新绑定深度缓冲区)。网上几乎所有的材料都在谈论绑定代码。无法真正找到有关如何解除特定渲染缓冲区绑定的可靠信息源。我的问题是如何解除深度渲染缓冲区的绑定,而不释放/删除其分配的内存?