OpenGL学习笔记三
2021-02-24 本文已影响0人
MxlZlh
渲染过程中可能产生的问题
解决⽅案
- 油画法
- 正背面剔除
- 深度测试
ZFighting闪烁问题
为什么会出现 ZFighting 闪烁问题?
答:深度相差非常⼩的情况下会出现。
解决方案
- Polygon Offset ⽅式解决
启⽤Polygon Offset glEnable(GL_POLYGON_OFFSET_FILL)
关闭Polygon Offset glDisable(GL_POLYGON_OFFSET_FILL)
裁剪
//1 开启裁剪测试 glEnable(GL_SCISSOR_TEST);
//2.关闭裁剪测试 glDisable(GL_SCISSOR_TEST);
//3.指定裁剪窗⼝
void glScissor(Glint x,Glint y,GLSize width,GLSize height);
x,y:指定裁剪框左下角位置; width , height:指定裁剪尺⼨
混合
glEnable(GL_BlEND);
⽬标颜色:已经存储在颜⾊缓存区的颜⾊值
源颜色:作为当前渲染命令结果进入颜⾊缓存区的颜⾊值 当混合功能被启动时,源颜⾊和⽬标颜⾊的组合方式是混合⽅方程式控制的。在默认情况下,
混合⽅程式如下所示:
Cf = (Cs * S) + (Cd * D)
Cf :最终计算参数的颜色
Cs : 源颜⾊
Cd :⽬标颜色
S:源混合因⼦子
D:⽬标混合因子
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);