专栏首页音视频技术学习笔记13. opengl高级-深度测试

13. opengl高级-深度测试

1. opengl深度测试原理,“测试”理解为“检测规则”更容易懂

关闭深度测试,后绘制的团会覆盖先绘制的纹理:

关闭深度测试的效果,按照深度规则来执行覆盖,z坐标小的覆盖z坐标大的

2. 深度值精度

考虑到,近处的纹理要细腻,所以对近处的坐标变化要更敏感,远处的纹理粗糙可以采样模糊些。 两种深度缓冲算法:

  1. 线性深度缓冲(现实中几乎用不到)

线性深度缓冲

  1. 非线性深度缓冲

非线性方程:

3. 深度冲突及处理

两个靠的很近的纹理,深度缓冲没有足够的精度来决定两个形状哪个在前面,就会不断的切换前后顺序,我们以前打CS的时候,也会发现人的脚和地板画面交错闪现。 处理方案:

  1. 物体之间设置一个很微小的距离(比如0.1mm),视精度而定
  2. 提高精度,不如常见的24位深度,提升到36位精度

本章代码比较简单,参考教程原文,很容易实现:opengl-深度测试

注意!一个纹理缓存如果是串行的,可以多次重复使用,参考下面代码:

        // cubes
        glBindVertexArray(cubeVAO);
        glActiveTexture(GL_TEXTURE0);
        glBindTexture(GL_TEXTURE_2D, cubeTexture);
        model = glm::translate(model, glm::vec3(-1.0f, 0.0f, -1.0f));
        lightingShader.setMat4("model", model);
        glDrawArrays(GL_TRIANGLES, 0, 36);
        
        model = glm::mat4(1.0f);
        model = glm::translate(model, glm::vec3(2.0f, 0.0f, 0.0f));
        lightingShader.setMat4("model", model);
        glDrawArrays(GL_TRIANGLES, 0, 36);

        // floor 
        glBindVertexArray(planeVAO);

        // 这里还是复用上面的纹理,并没有重新激活一个纹理
        glBindTexture(GL_TEXTURE_2D, floorTexture); 
        lightingShader.setMat4("model", glm::mat4(1.0f));
        glDrawArrays(GL_TRIANGLES, 0, 6);

猜测默认是指向第一个纹理单元的,所以如果只用一个纹理单元的话,不需要激活,看demo代码里有这么写的.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • opengl入门-坐标系统(1)

    坐标系变换流程 变换的好处: 1.1 方便计算 1.2 把很复杂的逻辑拆解成一次次独立的简单变换

    用户1068165
  • opengl入门-纹理

    用户1068165
  • 24.opengl高级光照-Blinn-Phong

    冯氏光照在逼近真实光照和性能之间做了很好的平衡,解决了绝大部分场景的需求,也存在一些细节问题。这一章节讲Blinn-Phong通过对冯氏光照做的一些优化。

    用户1068165
  • OpenGL ES _ 着色器_纹理图像

    玩过游戏的同学们,都知道在游戏人物身上穿的那个叫皮肤,专业点将那个就叫做纹理图像。GLSL 支持在顶点和片段着色器使用纹理图像。

    酷走天涯
  • 【大数据100分】冯一村:数据可视化的魅力

    大数据文摘
  • 干货 | 仅需10分钟,开启你的机器学习之路!

    随着行业内机器学习的崛起,能够帮用户快速迭代整个过程的工具变得至关重要。Python,机器学习技术领域冉冉升起的一颗新星,往往是带你走向成功的首选。因此,用 P...

    小小詹同学
  • 大数据价值49式

    2012年3月19日,奥巴马政府宣布美国投资2亿美元启动“大数据研究与开发计划,以帮助解决国家在科学与工程、国家安全、社会治理中最紧迫的诸多挑战...

    小莹莹
  • 十分钟机器学习入门

    随着行业内机器学习的兴起,对能够帮助您快速迭代整个过程的工具的需求变得至关重要。Python是机器学习技术的后起之秀,它通常是你获得成功的第一选择。因此,使用P...

    AiTechYun
  • 仅需10分钟:开启你的机器学习之路

    随着行业内机器学习的崛起,能够帮用户快速迭代整个过程的工具变得至关重要。Python,机器学习技术领域冉冉升起的一颗新星,往往是带你走向成功的首选。因此,用 P...

    磐创AI
  • 干货 | 如何用Python开启你的机器学习之路

    随着行业内机器学习的崛起,能够帮用户快速迭代整个过程的工具变得至关重要。Python,机器学习技术领域冉冉升起的一颗新星,往往是带你走向成功的首选。因此,用 P...

    CDA数据分析师

扫码关注云+社区

领取腾讯云代金券