前两篇链接:
OpenGL + Qt: 0 - 三角形绘制
OpenGL + Qt: 1 - 用下拉框选颜色
很感谢朋友们的关注,目前这个系列我努力做到每周一更,如果偶尔时间宽裕再多写一点。上次我们完成了渲染颜色和连接 OpenGL 与 Qt 的基本交互,这篇我们回到 OpenGL 本身,暂时不考虑交互,绘制一个正四面体。
三维坐标绘制
在 OpenGL 中,所有点都是在一个三维坐标系中的,正如我们之前看到的,我们用三维坐标确定每个顶点的位置位置,然后传入着色器中。在着色器中,gl_Position 变量最后会补上一个 1.0 变成一个四维坐标(即齐次坐标),这个我们不讨论,有兴趣的同学参考图形学的基础课本。今天我们画出一个看得过去的三维物体再说。既然是三维坐标,牵扯到了坐标系的问题,不过先不着急,我们先画一个正四面体,看看做出来的是什么样的。
顾名思义,一个正四面体有四个面,而每个面都是一个等边三角形。在 OpenGL 中,习惯上会把每个物体绘制在三维范围都是[-1,1]的一个小空间中,然后用各种坐标变换放缩和位移,布置到场景中。我们考虑绘制的正四面体的棱长为1,那么在二维上,以正三角形重心为坐标原点,其三个点坐标分别是