GLSL 编程/GLUT
外观
< GLSL 编程
在本节中,我们将介绍如何使用 C/C++ 实现 GLSL 概念,并以 GLUT 作为基本的 OpenGL 包装器。
我们将依赖于 OpenGL 编程维基教科书 中逐步构建的基础代码模板,用于加载纹理、模型,以及将顶点和制服传递给着色器。几乎所有的编码都将在着色器中进行。
注意:Android 用户可能需要查看 GLUT 包装器。
当使用着色器重新实现过时的 OpenGL 1.x 功能(如光照)时,我们将尝试使用类似的变量名称,以便熟悉先前版本的人可以轻松地升级他们的知识。
请注意,这些教程假设您按照此处显示的顺序阅读它们,即每个教程都假定您熟悉先前教程中介绍的概念和技术。如果您不熟悉 GLSL,至少应该通读“基础”部分中的教程。
其中许多教程已可用于 Blender 和 Unity - 如果你可以移植它们,欢迎贡献!
- 漫反射(关于每个顶点漫反射光照和多种不同类型的灯光源)
- 镜面反射(关于每个顶点光照)
- 双面表面(关于双面每个顶点光照)
- 平滑镜面反射(关于每个像素光照)
- 双面平滑表面(关于双面每个像素光照)
- 多重光源(关于用于处理多个灯光源的 for 循环)
- 拉丝金属(关于各向异性镜面反射)
- 轮廓上的镜面反射(关于镜面反射的菲涅耳系数)
- 漫反射天空光(关于半球光照)
- 半透明表面(关于漫反射和背光的前向散射透射)
- 半透明物体(关于对比度降低的漫反射光照和轮廓处漫反射背光的透射)
- 球体的柔和阴影(关于球体本影和半影的渲染)
- 卡通着色(关于非真实感渲染)
- 屏幕叠加(关于从对象空间到屏幕空间的直接变换)
- 公告板(关于视图对齐的物体投影)
- 非线性变形(关于顶点混合)
- 平面阴影(关于将阴影投影到平面上)
- 镜子(关于镜像物体和使用 alpha 缓冲区进行模板化)
< GLSL 编程
除非另有说明,本页面上的所有示例源代码均归属公有领域。