使用opengl绘制太阳、地球、月球,有纹理,有鼠标功能,有亮光

源码下载链接 https://download.csdn.net/download/mr0cheng/10831380

1.实现效果图如下

2. 环境配置

  1. windows7 64位
  2. vs2015
  3. 使用vs2015自带的NuGet工具,下载opengl库 Install-Package nupengl.core

3. 核心功能

3.1 太阳、地球、月球纹理实现

  1. 准备bmp文件
  2. 构建opengl可以解析的纹理数据结构,如下:
typedef struct {
	int width;				//纹理宽度
	int height;				//纹理高度
	unsigned int texID;		//纹理对象 ID
	unsigned char * data;	//实际纹理数据
}texture;
  1. 使用Windows自带的BITMAPFILEHEADER功能,载入bmp文件,填充数据结构。
  2. glBindTexture(GL_TEXTURE_2D, sun->texID);绑定纹理到对应的物体上。

使用opengl绘制太阳、地球、月球,有纹理,有鼠标功能,有亮光_第1张图片

3.2 设置光源

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

使用opengl绘制太阳、地球、月球,有纹理,有鼠标功能,有亮光_第2张图片

3.3 鼠标左键拖拽和滚轮缩放

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

使用opengl绘制太阳、地球、月球,有纹理,有鼠标功能,有亮光_第3张图片

你可能感兴趣的:(使用opengl绘制太阳、地球、月球,有纹理,有鼠标功能,有亮光)