2013-07-20 27 views
3

当我设置glEnable的东西,或指定func的东西,我启用,然后切换帧缓冲区对象,我的设置保存为每个帧缓冲区对象,还是我必须为每个设置它们?在实践中,这是否工作?切换FBO时是否保持glEnable?

glEnable(GL_CULL_FACE); 
glCullFace(GL_FRONT); 
glEnable(GL_DEPTH_TEST); 
glDepthMask(GL_TRUE); 
for int i=0; i<N; i++{ 
    glBindFramebuffer(GL_FRAMEBUFFER, fbos[i]); 
    rendering something to the fbos here 
} 

还是我必须写

for int i=0; i<N; i++{ 
    glBindFramebuffer(GL_FRAMEBUFFER, fbos[i]); 
    glEnable(GL_CULL_FACE); 
    glCullFace(GL_FRONT); 
    glEnable(GL_DEPTH_TEST); 
    glDepthMask(GL_TRUE); 
    rendering something to the fbos here 
} 

编辑:又是怎么回事glUseProgram?那是保存的吗?

回答

8

不,GL_CULL_FACE和其他光栅化状态不是根据帧缓冲区对象存储的。事实上,你只需要设置一次状态。

要检查这个事实,您可以阅读OpenGL specification的第23章(状态表)中的状态说明。该表定义了每个帧缓冲区对象的状态。

相关问题