使用opengl绘制太阳、地球、月球,有纹理,有鼠标功能,有亮光
源码下载链接 https://download.csdn.net/download/mr0cheng/10831380
1.实现效果图如下

2. 环境配置
- windows7 64位
- vs2015
- 使用vs2015自带的NuGet工具,下载opengl库
Install-Package nupengl.core
3. 核心功能
3.1 太阳、地球、月球纹理实现
- 准备bmp文件
- 构建opengl可以解析的纹理数据结构,如下:
typedef struct {int width; //纹理宽度int height; //纹理高度unsigned int texID; //纹理对象 IDunsigned char * data; //实际纹理数据
}texture;
- 使用Windows自带的BITMAPFILEHEADER功能,载入bmp文件,填充数据结构。
glBindTexture(GL_TEXTURE_2D, sun->texID);绑定纹理到对应的物体上。

3.2 设置光源
- 设置光源属性
GLfloat whiteLight[] = { 0.2f, 0.2f, 0.2f, 1.0f };
GLfloat lightPos[] = { 0.0f, 0.0f, 0.0f, 2.0f };
- 给太阳开启光源,并设置光源的属性
glEnable(GL_LIGHTING);
glLightfv(GL_LIGHT0, GL_POSITION, lightPos);

3.3 鼠标左键拖拽和滚轮缩放
实现比较简单,主要是捕捉鼠标事件,改变缩放因子和球体位置。具体可以看下图,三个球明显小了,在空间上的位置,也变化了。

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
