OpenGL 4.0 Shading Language Cookbook 读书笔记(二)
----- 随书代码第二章运行工程
这本书只有英文版,所以只有硬着头皮看,但是看的很慢,终于看到第二章了,里面第二章的代码也照抄了一遍。发现里面的代码质量很高,因为用到了很多作者写的工具类,非常丰富,而且基本都是封装成了类,使用起来很方便。下面是书中常用的类和函数
- GLUtils 负责打印openGL版本信息
- gl_core_4_4 各种openGL API 回调函数,比如:_ptrc_glBlendFunc _ptrc_glClearDepth _ptrc_glDepthFunc等等
- VBOTorus 绘制花环
- VBOTeapot 绘制茶壶
- VBOMesh 绘制网格
- VBOPlane 绘制地板
- GLSLProgram 复制shader着色器的加载、编译、链接
本章主要内容
1. shader实现单个光源的光照模型
(1)ADS(ambient, diffuse, specular)环境光,漫反射,镜面高光
(2)在shader中实现自定义函数调用
(3)实现双面(前面front、背面back)着色
(4)实现平面着色(flat shading)
(5)使用Subroutines选择着色器功能
(6)Discarding fragments to create a perforated look 丢弃碎片,已实现穿孔效果
2. 效果如下:
(1)环境光
(2)ADS (环境光,漫反射,镜面高光 )也称作Phong shading model,三种光混合效果
(3)实现双面着色
(4)实现平面着色
(5)使用Subroutines选择着色器功能
(6)Discarding fragments to create a perforated look 丢弃碎片,已实现穿孔效果
代码
最关键的代码部分
这个工程使用上面的所有工程
注意红色线框部分,
要实现这6中功能,需要在“调试“ 命令参数中加入:ads diffuse discard flat subroutine twoside
并且上图中的一行代码 string recipe = argv[1]; //把 1 改成 1~6 就分别实现了下面的6种效果
代码下载地址:https://download.csdn.net/download/aoxuestudy/13131542