「游戏引擎 浅入浅出」是一本开源电子书,PDF/随书代码/资源下载: https://github.com/ThisisGame...


着色器就是Shader,Shader就是一段GPU程序源码。

咱们大学就学过的C语言是CPU程序源码,Shader和C 语言有很多相似之处,也要写代码、编译、链接。

通过上面的表格来做对照。

C语言Shader
指标硬件CPUGPU
编译流程创立我的项目创立GPU程序
创立编写多个C代码文件创立编写Shader(顶点Shader和片段Shader)
把C代码发给编译器把Shader代码发送到编译器
编译C代码编译Shader代码
增加到链接列表增加到链接列表
链接链接

是不是很类似呢!

渲染一个图像,其实就是在GPU上执行了Shader程序,而后将顶点坐标、色彩数据作为输出,经由Shader进行解决,而后输入像素数据到屏幕上。

和C语言不一样的是,C语言只须要一个main.c 文件就能够编译胜利。

然而Shader是配套呈现的, Vertex Shader(顶点着色器)、Fragment Shader(片段着色器),两者缺一不可。

C语言Shader
指标硬件CPUGPU
代码文件列表main.cmain.vs(Vertex Shader)
...main.fs(Fragment Shader)

着色器的品种

Vertex Shader(顶点着色器)、Fragment Shader(片段着色器/像素着色器) 咱们听到最多的就是这两个。

Geometry Shader、Computer Shader看过然而理论我的项目中没用过。

Tessellation Control Shader 、Tessellation Evaluation Shader这两个就简直没有听过。

这是由工作内容决定的,大家都是从事手机游戏开发。
目前市面上的手机,很大一部分依然是OpenGL ES3.0的版本或更低。

Computer Shader在OpenGL ES 3.1版本才开始反对。

Geometry Shader在OpenGL ES 3.2版本才开始反对。

更多材料参考OpenGL官网:https://www.khronos.org/opengl/wiki/Category:Shaders

本书也仅介绍Vertex Shader(顶点着色器)、Fragment Shader(片段着色器)。

3.绘制简略图形 这一章的配套我的项目里,ShaderSource.h 外面就寄存着Vertex Shader 和 Fragment Shader 的源码。

如下图:

察看这段代码,又发现和C语言的相同之处 -- 入口都是 main 函数。

C语言Shader
指标硬件CPUGPU
入口void main()void main()

以后大节对Shader有了一个大略的映像即可,后续章节再具体介绍。