03、OpenGL隐藏面消除

2019-05-21  本文已影响0人  小番茄爸爸呀

在渲染过程中可能产生的问题

在绘制3D场景的时候,我们需要决定哪些部分是对观察者可见的,或者哪些部分是对观察者不可见的。不可见的部分,应该尽早的抛弃掉。例如一个不同的墙壁后,就不应该渲染。这种情况叫作隐藏面消除(Hidden surface elimination)

油画算法(基本不使用这种方法,也不推荐)

油画法.png

油画算法的弊端

三角形叠加.png

正背面剔除

分析顶点顺序.png
正方体的正背面.png

代码

void glEnable(GL_CULL_FACE);
void glDisable(GL_CULL_FACE);
void glCullFace(GLenum mode);
mode参数:GL_FRONT,GL_BACK,GL_FRONT_AND_BACK ,默认GL_BACK
void glFrontFace(GLenum mode)
mode参数为: GL_CW,GL_CCW,默认值:GL_CCW(逆时针顶点顺序的三角形)
void glCullFace(GL_BACK); 
void glFrontFace(GL_CW);//修改顺时针顶点顺序的三角形为正面
void glCullFace(GL_Front); 
上一篇 下一篇

猜你喜欢

热点阅读