天天看点

OpenGL_4.0_Shading_Language_Cookbook 读书笔记(2)

OpenGL 4.0 Shading Language Cookbook 读书笔记(二)

                                                        ----- 随书代码第二章运行工程

                   这本书只有英文版,所以只有硬着头皮看,但是看的很慢,终于看到第二章了,里面第二章的代码也照抄了一遍。发现里面的代码质量很高,因为用到了很多作者写的工具类,非常丰富,而且基本都是封装成了类,使用起来很方便。下面是书中常用的类和函数

  1. GLUtils             负责打印openGL版本信息
  2. gl_core_4_4    各种openGL API 回调函数,比如:_ptrc_glBlendFunc  _ptrc_glClearDepth _ptrc_glDepthFunc等等
  3. VBOTorus        绘制花环
  4. VBOTeapot      绘制茶壶
  5. VBOMesh       绘制网格
  6. VBOPlane      绘制地板
  7. 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)环境光

OpenGL_4.0_Shading_Language_Cookbook 读书笔记(2)

       (2)ADS (环境光,漫反射,镜面高光 )也称作Phong shading model,三种光混合效果

OpenGL_4.0_Shading_Language_Cookbook 读书笔记(2)

             (3)实现双面着色

OpenGL_4.0_Shading_Language_Cookbook 读书笔记(2)

              (4)实现平面着色

OpenGL_4.0_Shading_Language_Cookbook 读书笔记(2)

             (5)使用Subroutines选择着色器功能

OpenGL_4.0_Shading_Language_Cookbook 读书笔记(2)

             (6)Discarding fragments to create a perforated look 丢弃碎片,已实现穿孔效果

OpenGL_4.0_Shading_Language_Cookbook 读书笔记(2)

  代码

      最关键的代码部分

这个工程使用上面的所有工程      

注意红色线框部分,

OpenGL_4.0_Shading_Language_Cookbook 读书笔记(2)

要实现这6中功能,需要在“调试“   命令参数中加入:ads diffuse discard flat subroutine twoside

继续阅读