源码下载链接 /download/mr0cheng/10831380
1.实现效果图如下
2. 环境配置
windows7 64位vs使用vs自带的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 鼠标左键拖拽和滚轮缩放
实现比较简单,主要是捕捉鼠标事件,改变缩放因子和球体位置。具体可以看下图,三个球明显小了,在空间上的位置,也变化了。