资源简介
使用opengl绘制太阳、地球、月球。1. 可以用鼠标左键拖拽,用鼠标滚轮缩放。2. 实现了太阳光线照射地球和月球。 3. 添加有纹理。
代码片段和文件信息
#include “loadBMP.h“
texture * sun *earth *moon; //纹理指针
unsigned char * LoadBmpFile(char * filename BITMAPINFOHEADER * bmpInfoHeader) {
FILE * file;
BITMAPFILEHEADER bmpFileHeader;
unsigned char * image;
unsigned int imageIdx = 0;
unsigned char tempRGB;
fopen_s(&file filename “rb“);
if (file == NULL)
return 0;
fread(&bmpFileHeader sizeof(BITMAPFILEHEADER) 1 file); // 读取 BMP 文件头
if (bmpFileHeader.bfType != BITMAP_ID) // 验证是否是一个 BMP 文件
{
fclose(file);
return 0;
}
fread(bmpInfoHeader sizeof(BITMAPINFOHEADER) 1 file); // 读位图信息头
fseek(file bmpFileHeader.bfOffBits SEEK_SET); // 将文件指针移到位图数据的开始处
image = (unsigned char *)malloc(bmpInfoHeader->biSizeImage); // 分配内存给位图数据
if (!image)
{
free(image);
fclose(file);
return 0;
}
fread(image 1 bmpInfoHeader->biSizeImage file); // 读取位图数据
if (image == NULL)
{
fclose(file);
return 0;
}
// 反转 R 和 B 值以得到 RGB,因为位图颜色格式是 BGR
for (imageIdx = 0; imageIdx < bmpInfoHeader->biSizeImage; imageIdx += 3)
{
tempRGB = image[imageIdx];
image[imageIdx] = image[imageIdx + 2];
image[imageIdx + 2] = tempRGB;
}
fclose(file);
return image;
}
texture * LoadTexFile(char * filename) {
BITMAPINFOHEADER texInfo;
texture * thisTexture;
thisTexture = (texture *)malloc(sizeof(texture));
if (thisTexture == NULL)
return 0;
thisTexture->data = LoadBmpFile(filename &texInfo); // 调入纹理数据并检查有效性
if (thisTexture->data == NULL)
{
free(thisTexture);
return 0;
}
thisTexture->width = texInfo.biWidth; // 设置纹理的宽和高
thisTexture->height = texInfo.biHeight;
glGenTextures(1 &thisTexture->texID); // 生成纹理对象名
return thisTexture;
}
BOOL LoadAllTextures() {
sun = LoadTexFile(“sun.bmp“);
if (sun == NULL)
return FALSE;
glBindTexture(GL_TEXTURE_2D sun->texID);
glTexParameterf(GL_TEXTURE_2D GL_TEXTURE_MAG_FILTER GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D GL_TEXTURE_MIN_FILTER GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D GL_TEXTURE_WRAP_S GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D GL_TEXTURE_WRAP_T GL_REPEAT);
gluBuild2DMipmaps(GL_TEXTURE_2D GL_RGBA sun->width sun->height GL_RGB GL_UNSIGNED_BYTE sun->data);
earth = LoadTexFile(“earth.bmp“);
if (earth == NULL)
return FALSE;
glBindTexture(GL_TEXTURE_2D earth->texID);
glTexParameterf(GL_TEXTURE_2D GL_TEXTURE_MAG_FILTER GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D GL_TEXTURE_MIN_FILTER GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D GL_TEXTURE_WRAP_S GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D GL_TEXTURE_WRAP_T GL_REPEAT);
gluBuild2DMipmaps(GL_TEXTURE_2D GL_RGBA earth->width earth->height GL_RGB GL_UNSIGNED_BYTE earth->data);
moon = LoadTexFile(“moon.bmp“);
if (moon == NULL)
return FALSE;
glBindTexture(GL_TEXTURE_2D moon->texID);
glTexParameterf(GL_TEXTURE_2D GL_TEXTURE_MAG_FILTER GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D GL_TEXTURE_MIN_FIL
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
..A..H. 44544 2018-12-06 08:27 work\.vs\work\v14\.suo
文件 218624 2015-10-14 09:58 work\Debug\freeglut.dll
文件 337408 2015-10-14 09:58 work\Debug\glew32.dll
文件 350720 2015-10-14 09:58 work\Debug\glewinfo.exe
文件 43520 2015-10-14 09:58 work\Debug\glfw3.dll
文件 222720 2015-10-14 09:58 work\Debug\visualinfo.exe
文件 921600 2018-12-04 19:00 work\Debug\work.pdb
文件 9468 2018-11-09 21:56 work\packages\nupengl.core.0.1.0.1\.signature.p7s
文件 232 2015-10-14 09:58 work\packages\nupengl.core.0.1.0.1\build\configurations.autopkg
文件 1847 2015-10-14 09:58 work\packages\nupengl.core.0.1.0.1\build\native\default-propertiesui.xm
文件 7837 2015-10-14 09:58 work\packages\nupengl.core.0.1.0.1\build\native\docs\license.txt
文件 703 2015-10-14 09:58 work\packages\nupengl.core.0.1.0.1\build\native\include\GL\freeglut.h
文件 9246 2015-10-14 09:58 work\packages\nupengl.core.0.1.0.1\build\native\include\GL\freeglut_ext.h
文件 27148 2015-10-14 09:58 work\packages\nupengl.core.0.1.0.1\build\native\include\GL\freeglut_std.h
文件 943450 2015-10-14 09:58 work\packages\nupengl.core.0.1.0.1\build\native\include\GL\glew.h
文件 660 2015-10-14 09:58 work\packages\nupengl.core.0.1.0.1\build\native\include\GL\glut.h
文件 70092 2015-10-14 09:58 work\packages\nupengl.core.0.1.0.1\build\native\include\GL\glxew.h
文件 63627 2015-10-14 09:58 work\packages\nupengl.core.0.1.0.1\build\native\include\GL\wglew.h
文件 82172 2015-10-14 09:58 work\packages\nupengl.core.0.1.0.1\build\native\include\GLFW\glfw3.h
文件 5684 2015-10-14 09:58 work\packages\nupengl.core.0.1.0.1\build\native\include\GLFW\glfw3native.h
文件 36642 2015-10-14 09:58 work\packages\nupengl.core.0.1.0.1\build\native\lib\Win32\freeglut.lib
文件 562210 2015-10-14 09:58 work\packages\nupengl.core.0.1.0.1\build\native\lib\Win32\glew32.lib
文件 17748 2015-10-14 09:58 work\packages\nupengl.core.0.1.0.1\build\native\lib\Win32\glfw3dll.lib
文件 33672 2015-10-14 09:58 work\packages\nupengl.core.0.1.0.1\build\native\lib\x64\freeglut.lib
文件 553592 2015-10-14 09:58 work\packages\nupengl.core.0.1.0.1\build\native\lib\x64\glew32.lib
文件 17418 2015-10-14 09:58 work\packages\nupengl.core.0.1.0.1\build\native\lib\x64\glfw3dll.lib
文件 4857 2015-10-14 09:58 work\packages\nupengl.core.0.1.0.1\build\native\nupengl.core.targets
文件 73 2015-10-14 09:58 work\packages\nupengl.core.0.1.0.1\build\publisher-info.txt
文件 352318 2018-12-04 17:33 work\packages\nupengl.core.0.1.0.1\nupengl.core.0.1.0.1.nupkg
文件 9467 2018-11-09 13:32 work\packages\nupengl.core.redist.0.1.0.1\.signature.p7s
............此处省略105个文件信息
相关资源
- Qt通过控件控制立方体旋转
- OpenGL编程指南 第九版英文版 OpenGL P
- 三维游戏设计师宝典(经典!)——学
- OpenGL课程设计
- OpenGL飘动的雏菊画布
- OpenGL-篮球场.rar
- opengl显示兔子程序
- learnopengl-cn-2018年5月更新.pdf
- OpenGL超级宝典完整源码(第五版)
- OpenGL游戏程序设计+源码
- opengl编程指南第七版
- 基于OpenGL实现的各种粒子特效
- 3D模型obj文件导入渲染光照贴图
- OpenGL配置库与教程实现一个.
- 基于特征点匹配的三维重建OpenCV+Ope
- OpenGL编程指南原书第8版 中文PDF 高清
- glui批生成文件
- 利用opengl 读取建筑物模型 obj文件并加
- 学OpenGL编3D游戏含源代码
- openGL正方体贴图
- 用opengl写的一个保龄球游戏
- OpenGL完成对OFF文件的读取和使三维模
- OpenGL实验八犹他茶壶光照、阴影、纹
- opengl绘制花瓶演示
- 自己写的读取任意格式点云并读取的
- opengl加载off文件
- OPENGL 水波效果 源代码
- OpenGL光照测试Revision演示程序
- 基于OpenGL的3D旋转魔方
- OpenGL ES 3.x游戏开发 下卷
评论
共有 条评论