美文网首页
OpenGL裁剪、混合的理解

OpenGL裁剪、混合的理解

作者: CrazySnow | 来源:发表于2020-07-14 17:18 被阅读0次

裁剪

  • 裁剪:在OpenGL 中提⾼渲染的一种方式.只刷新屏幕上发⽣变化的部分.OpenGL 允许将要进行渲染的窗口只去指定一个裁剪框.
  • 基本原理:⽤于渲染时限制绘制区域,通过此技术可以在屏幕(帧缓冲)指定一个矩形区域。启用剪裁测试之后,不在此矩形区域内的⽚元被丢弃,只有在此矩形区域内的片元才有可能进入帧缓冲。因此实际达到的效果就是在屏幕上开辟了了⼀个⼩窗口,可以在其中进⾏指定内容的绘制。
    开启裁剪测试
glEnable(GL_SCISSOR_TEST);

关闭裁剪测试

 glDisable(GL_SCISSOR_TEST);

指定裁剪窗⼝
x,y:指定裁剪框左下角位置; width , height:指定裁剪尺寸

void glScissor(Glint x,Glint y,GLSize width,GLSize height);

混合

  • 混合:OpenGL渲染时会把颜色值存在颜色缓存区中,每个⽚段的深度值是放在深度缓冲区。当深度缓冲区被关闭时,新的颜色将简单的覆盖原来颜色缓存区存在的颜色值,当深度缓冲区再次打开时,新的颜色片段只有当它们比原来的值更接近邻近的裁剪平面会替换原来的颜⾊片段。

根据使用场景的不同,混合有两种方式:
1.开关混合:单纯的两个图层混合

//开启混合
glEnable(GL_BLEND);
//关闭混合
glDisable(GL_BLEND);

2.开关混合+混合方程式:(滤镜效果)带有半透明的图层混合,或者是不存在图层单纯的两种颜色混合

  • ⽬标颜⾊:已经存储在颜色缓存区的颜色值
  • 源颜色:作为当前渲染命令结果进入颜⾊缓存区的颜色值

设置混合因子

//S:源混合因⼦子 D:⽬目标混合因⼦子
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
混合方程式.png OpenGL混合因子.png

总结:
在混合方程中,源颜色(最上面的图层)的alpha值越高,添加的新颜色成分就越高,旧颜色值就保留的越少
混合函数经常用于实现在其他一些不透明的物体前面绘制一个透明物体的效果。
完整demo

相关文章

  • OpenGL裁剪、混合的理解

    裁剪 裁剪:在OpenGL 中提⾼渲染的一种方式.只刷新屏幕上发⽣变化的部分.OpenGL 允许将要进行渲染的窗口...

  • OpenGL 裁剪与混合

    一、裁剪 另一种提高渲染性能的方法是只刷新屏幕上发生变化的部分。我们可能还需要将 OpengGL 渲染限制在窗口中...

  • OpenGL的裁剪和混合

    窗⼝,视⼝,裁剪区域 窗⼝: 就是显示界⾯ 视⼝: 就是窗⼝中⽤来显示图形的⼀块矩形区域,它可以和窗⼝等⼤,也可以...

  • 6、OpenGL 裁剪和混合

    裁剪 在OpenGL中提⾼渲染效率的⼀种⽅式。只刷新屏幕上发⽣变化的部分。 基本原理用于渲染时限制绘制区域,通过此...

  • OpenGL中的裁剪与混合

    一、裁剪 另一种提高渲染性能的方法是只刷新屏幕上发生变化的部分。我们可能还需要将 OpengGL 渲染限制在窗口中...

  • OpenGL颜色混合和裁剪

    颜色混合出现的背景 我们开启深度测试后,如果2个重复的图层中,有一个图层是半透明的,有一个图层是非半透明的,那么我...

  • OpenGL(九)-渲染技巧(裁剪、混合)

    裁剪 在OpenGL中提⾼渲染的⼀种方式.只刷新屏幕上发生变化的部分.OpenGL 允许将要进⾏渲染的窗⼝只去指定...

  • OpenGL渲染之裁剪-混合-抗锯齿

    裁剪 只刷新屏幕上发生变化的部分可以提高渲染性能 OpenGL中是允许将要进行渲染的窗口指定一个裁剪框 裁剪框与窗...

  • OpenGL 深度测试、裁剪、颜色混合

    甜甜圈旋转两部分重叠时,此时OpenGL不能区分哪个图层在前,哪个图层在后就会出现缺少一部分的现象。解决此问题需了...

  • Opengl混合算法探究

    在我们的实际应用中使用OpenGL进行混合常见的问题有以下三种: 使用Opengl自带的混合算法 自定义混合算法 ...

网友评论

      本文标题:OpenGL裁剪、混合的理解

      本文链接:https://www.haomeiwen.com/subject/jnsfhktx.html