在三维显示中,很多效果的实现都需要通过控制OpenGL的状态来达到,例如:
- 深度测试:glEnable(GL_DEPTH_TEST)\glDepthMask(GL_FALSE)\glDepthFunc(GL_LESS)
- 颜色混合:glEnable(GL_BLEND)\glBlendFunc(...)\glBlendFuncSeperate(...)
- ...
这样的OpenGL状态有很多(在glew.h中),VTK中能够对哪些OpenGL的状态进行控制,控制的方式是什么样的呢?
void vtkOpenGLState::Initialize(vtkOpenGLRenderWindow*)
{
this->TextureUnitManager->Initialize();
this->InitializeTextureInternalFormats();
auto& cs = this->Stack.top();
cs.Blend ? ::glEnable(GL_BLEND) : ::glDisable(GL_BLEND);
cs.CullFace ? ::glEnable(GL_CULL_FACE) : ::glDisable(GL_CULL_FACE);
cs.DepthTest ? ::glEnable(GL_DEPTH_TEST) : ::glDisable(GL_DEPTH_TEST);
#ifdef