已经不知道多少次看Learn OpenGL的你好,三角形了,这种感觉似曾相识 :abandon、abandon、abandon ~ [捂脸]
结果不出所料,好久没用,忘得一干二净。本篇就从OpenGL的一些概念说起吧。
最终目的:使用QT+OpenGL绘制如下效果的三角形
OpenGL与shader
我们知道在OpenGL中,任何事物都在3D空间中,而我们的显示介质是2D的像素空间,so OpenGL中很重要的一环就是把3D坐标转换为适应你屏幕的2D像素。3D坐标转换为2D坐标处理过程是由OpenGL的图形渲染管线(Graphics Pipeline)管理的。图形渲染管线有可以分为两部分:第一部分把你的3D坐标转换为2D;第二部分把2D坐标转换为有颜色的像素,显示到屏幕上。
大佬们又将Graphics Pipeline这一阶段高度专门化,并且设计得让每阶段都很容易地并行执行(GPU就有了用武之地)。这些跑在GPU上的小程序就叫着色器(shader)。
下图(转自 Learn OpenGL CN),是一个图形渲染管线的每个阶段的抽象展示。
该抽象Graphics Pipeline简述
首先,我们将3D的顶点数据传入渲染管线;第一部分是顶点着色器(Vertex Shader),此阶段把输入的3D顶点转换为另一种3D坐标,同时支持我们对输入的顶点进行一些我们需要的处理。图元装配(Primitive