文章目录

  • 前言
  • 一、雾化效果是什么?
  • 二、着色器源码
    • 1.先上着色器源码
    • 2.解析源码内容

前言

最近想要实现雾化效果,但是百度了下基本是使用了glut工具包的文章。确实使用glut能很快的实现对应的效果,但是也有缺点。

  1. 使用了glut就不能使用glfw了
  2. 使用了glut去实现只是调用一个API,很难知道对应的原理是什么

一、雾化效果是什么?

如图显示

二、着色器源码

1.先上着色器源码

代码如下(示例):

        float dist = abs( fs_in.FragPos.z - viewPos.z);float fogFactor = (maxDist - dist) / (maxDist - minDist) * isFog;fogFactor = clamp( fogFactor, 0.0, 1.0 );lighting = mix(vec3(fogColor), lighting, fogFactor);

2.解析源码内容

计算顶点的深度到摄像机深度的绝对位置差距

        float dist = abs( fs_in.FragPos.z - viewPos.z);

可配置参数maxDist、minDist
maxDist代表最远的距离,此时茶壶会完全消失不见。
minDist代表最近的距离,此时茶壶会显示原有的色彩

       float fogFactor = (maxDist - dist) / (maxDist - minDist) * isFog;


OpenGL实现雾化效果相关推荐

  1. android opengl es 雾化效果实例

    雾相关: 三种雾的计算方法,怎么设置雾的颜色和雾的范围 设置雾的背景颜色:gl.glClearColor(0.5f, 0.5f, 0.5f, 1.0f); 设置雾气的模式:gl.glFogf(GL10 ...

  2. 万字长文详解如何用Python玩转OpenGL | CSDN 博文精选

    作者 | 天元浪子 来源 | CSDN博文精选 [编者按]OpenGL(开放式图形库),用于渲染 2D.3D 矢量图形的跨语言.跨平台的应用程序编程接口,C.C++.Python.Java等语言都能支 ...

  3. 转贴: OpenGL开发库的组成

    OpenGL开发库的组成 开发基于OpenGL的应用程序,必须先了解OpenGL的库函数.它采用C语言风格,提供大量的函数来进行图形的处理和显示.OpenGL库函数的命名方式非常有规律.所有OpenG ...

  4. [转]OpenGL库介绍

    原帖地址:http://blog.csdn.net/yyyuhan/archive/2008/01/15/2045009.aspx 开发基于OpenGL的应用程序,必须先了解OpenGL的库函数.它采 ...

  5. OpenGL 库 简介

    OpenGL 库 简介 OpenGL库函数的命名方式为:<库前缀><根命令><可选的参数个数><可选的参数类型>. 库前缀有gl.glu.aux.glu ...

  6. OpenGL开发库的详细介绍

    OpenGL开发库的组成 开发基于OpenGL的应用程序,必须先了解OpenGL的库函数.它采用C语言风格,提供大量的函数来进行图形的处理和显示.OpenGL库函数的命名方式非常有规律.所有OpenG ...

  7. 万字长文详解如何用 Python 玩转 OpenGL | CSDN 博文精选

    作者 | 天元浪子 责编 | 伍杏玲 出品 | CSDN 博客 [CSDN 编者按]OpenGL(开放式图形库),用于渲染 2D.3D 矢量图形的跨语言.跨平台的应用程序编程接口,C.C++.Pyth ...

  8. 转-基于OpenGL的3D天空仿真

    在进行3D场景渲染时,天空是必不可少的因素.对于3D天空的模拟在视景仿真系统.计算机游戏.三维动画中有着广泛的应用.但是,目前对于天空的仿真还存在很多不足,一些模拟方法中存在实现复杂.计算耗时.图像分 ...

  9. 基于OpenGL的3D天空仿真

    From:http://www.c-cnc.com/dz/news/news.asp?id=18622 在进行3D场景渲染时,天空是必不可少的因素.对于3D天空的模拟在视景仿真系统.计算机游戏.三维动 ...

最新文章

  1. c语言名字程序,c语言获得程序位数和操作系统位数和名称
  2. Ubuntu下eclipse indigo版在线安装hibernate插件
  3. 硬盘参数你都懂吗?(上)-从案例引发的讨论
  4. php获取网络文件的几种方式,PHP如何实现获取网络上的文件?
  5. 浅谈Normalize.css
  6. springcache使用笔记002_注释驱动的 Spring cache 按条件查询
  7. 整理几个有想法的面试题
  8. 关于vim的误删除经历
  9. ORM框架之Mybatis(六)mybatis通用mapper
  10. centos7升级内核
  11. 转:java工程师成神之路
  12. IDEA提交git代码,配置文件乱码
  13. python根据词向量计算相似度_如何使用gensim的word2vec模型和python计算句子相似度...
  14. 关于C语言中的宏的一点点讨论
  15. 服务器空间满了造成的麻烦
  16. 浅谈非类型模板参数、模板的特化
  17. 爱奇艺海量数据实时分析架构的演进
  18. Postgresql 常用命令合集-建议收藏
  19. 7-27 从身份证号码中提取出出生年月 (12point(s))
  20. Android实现点击跳转本地浏览器打开网页的精简方式

热门文章

  1. js 获取汉字首拼和全拼和拼音
  2. 手机通过adb工具安装应用
  3. Debian 查看 硬盘 SD卡 容量 内存大小
  4. vscode+git浅尝
  5. 为什么会有大端/小端之分?(众说纷纭)
  6. 网络聊天中的英语简写
  7. 西安交通大学大学计算机考试题,西安交通大学17年3月课程考试《计算机应用基础》作业考核试题...
  8. 《喜羊羊与灰太狼》中羊村的团队建设
  9. Dem与遥感影像制作三维效果简单教程
  10. Android 2.2模拟器调出中文输入法