OpenGL Shading Language(GLSL)概览

翻了很久的learnopengl,快到结尾了,终于感觉入门了的感觉。
整个教程除了OpenGL的入门,反反复复介绍的就是利用shader进行各种花式渲染。
那么聪明如我的读者肯定就知道了,图形编程的关键是深入到shader编程,通过其提升渲染效率及提供高级渲染效果。

教程的Debugging一节,打开了一扇门,其中提到了不同的显卡厂商在驱动中带的GLSL编译器的标准是略不同的。
NVIDIA比AMD要求松一些,适当兼容了不在OpenGL中不包含的情况,所以可能出现NVIDIA上的shader编译无问题的情况在AMD显卡上无法运行的情况。所以就有这样一个标准的Shader检查器(GLSL reference compiler)。良心啊,开源的,关键是显卡厂商就是不愿意统一,和JS、CSS等问题感觉类似。

各式各样的shader

有这样一系列的shader类型:
.vert - a vertex shader
.tesc - a tessellation control shader
.tese - a tessellation evaluation shader
.geom - a geometry shader
.frag - a fragment shader
.comp - a compute shader

其中,有一个比较特别的compute shader,细看之下应该就是OpenCL一类的底层吧,难怪NVIDIA这么厉害了,在GLSL标准外额外支持了一系列的API,然后就在并行计算上胜了AMD一招。

这个compute shader是脱离在GL的渲染流程之外的,是单独的glDispatchCompute函数对其执行的调用。问题是这个和opencl有什么关系呢?之后还得再看看,如果opencl足够好用了,这个感觉也没多大意思了。

项目的背景图案

经过两日的努力,终于做出了比较炫的地球了,这下项目界面的背景终于有着落了

地球