使用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;		//纹理对象 IDunsigned char * data;	//实际纹理数据
}texture;
  1. 使用Windows自带的BITMAPFILEHEADER功能,载入bmp文件,填充数据结构。
  2. glBindTexture(GL_TEXTURE_2D, sun->texID);绑定纹理到对应的物体上。

在这里插入图片描述

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);

在这里插入图片描述

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

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

在这里插入图片描述


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

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部