使用Qt5.8,OpenGL4.3,glm0.9.6.3,绘制地球(带纹理)、月球(带纹理)、云层(使用混合方式绘制在地球外层)等物体,并且有光照、白天与黑夜过渡效果(利用多重和过程纹理)、天体的自转(地球、月球)与公转(月球)效果。
网络上的demo有以下部分问题:1-着色器程序代码是以字符串数组的形式提供,而未以独立的文件。2-使用的OpenGL版本低,还在使用诸如gluLookAt(),glPushMatrix(),glBegin(GL_LINES)之类的函数。3-结构不合理,主要表现为大量程序代码都集中在一个文件中。本程序根据<<***游戏开发 上卷***>>书中的示例(android平台,java编写)改写而来,解决了上述问题并加入glm库以实现矩阵相关操作问题(老版本使用glRotatef(),glTranslate()之类的函数)。
注1:请下载glm库并解压,将解压后的文件夹中同样名为glm的文件夹复制到Qt安装路径中include目录下,我用visual studio 2017编译Qt程序,放在*****\msvc2017_64\include\下,星号根据自己的安装路径而不同。
注2:天体转动效果需要你在窗口中按住鼠标左键,然后滑动鼠标才能看到(qt不会自动更新画面,相比之下微软的可视化窗口界面框架就能每帧自动更新)。
效果图如下:(白点代表星星,三毛特效^_^)
本程序(opengl-地月系)代码: