渲染优化

2019-06-21  本文已影响0人  infoyou

油画法

正背面剔除 [Face Culling]

深度测试 先判断再填充

ZFighting 闪烁

1. 启⽤用 Polygon Offset ⽅方式解决

让深度值之间产生区别,在执行深度测试前将物体的深度值做一些细微的增加,于是就能将重叠的2个图形深度值之间有所区分

//启用Polygon Offset
glEnable(GL_POLYGON_OFFSET_FILL)
参数列表:
GL_POLYGON_OFFSET_POINT
GL_POLYGON_OFFSET_LINE
GL_POLYGON_OFFSET_FILL
2. 指定偏移量
void glPolygonOffset(Glfloat factor,Glfloat units);
 
应⽤到片段上总偏移计算⽅方程式:
Depth Offset = (DZ * factor) + (r * units); DZ:深度值(Z值)
 
r:使得深度缓冲区产生变化的最小值
负值,将使得z值距离我们更近,而正值,将使得z值距离我们更远,我们设置factor和units设置为-1,-1
3. 关闭Polygon Offset
glDisable(GL_POLYGON_OFFSET_FILL)
预防
上一篇下一篇

猜你喜欢

热点阅读