计算机图形学课程设计报告 - 范文

2026/1/21 10:59:15

课题名称:Solar System太阳系 学生姓名:曾睿 学生学号:0643111150

void glPushMatrix(); void glPopMatrix();

所有几何投影变换都是矩阵相乘的结果。这两个重要函数保存一个初始坐标点.

释放缓存:

不考虑信息缓存区是否放满,强制主机把命令传输出去。在高档体系结构中,每种操作是由图形硬件的不同部分分别执行的,CPU负责控制,这样才可以保证计算机资源的充分利用,提高作图质量和作图速度。OpenGL中提供了解决这个问题的操作。 glFlush();

建立窗口:

glutInitWindowSize(WIN_WIDTH, WIN_HEIGHT); // 初始化窗口大小glutInitWindowPosition(30,30); // 初始化窗口位置glutCreateWindow(WIN_TITLE); // 建立窗口

七、源代码: loadTexture.h

#ifndef LOADTEXTURE #define LOADTEXTURE

// 纹理图像结构 typedef struct { int imgWidth; int imgHeight; unsigned char byteCount; alpha通道的24位图 unsigned char *data;

// 纹理宽度

// 纹理高度

// 每个象素对应的字节数,3:24位图,4:带// 纹理数据

-12-

课题名称:Solar System太阳系 学生姓名:曾睿 学生学号:0643111150

}TEXTUREIMAGE;

// BMP文件头 #pragma pack(2) typedef struct { unsigned short bfType; // 文件类型 unsigned long bfSize; // 文件大小 unsigned short bfReserved1; // 保留位 unsigned short bfReserved2; // 保留位 unsigned long bfOffBits; // 数据偏移位置 }BMPFILEHEADER; #pragma pack()

// BMP信息头 typedef struct { unsigned long biSize; // 此结构大小 long biWidth; // 图像宽度 long biHeight; // 图像高度 unsigned short biPlanes; // 调色板数量 unsigned short biBitCount; // 每个象素对应的位数,24:24位图,32:带alpha通道的24位图 unsigned long biCompression; // 压缩 unsigned long biSizeImage; // 图像大小 long biXPelsPerMeter;// 横向分辨率 long biYPelsPerMeter;// 纵向分辨率 unsigned long biClrUsed; // 颜色使用数 unsigned long biClrImportant; // 重要颜色数 }BMPINFOHEADER;

//载入BMP位图文件

void LoadBmp(char *filename, TEXTUREIMAGE *textureImg);

//生成纹理

void MakeTexture(TEXTUREIMAGE textureImg, GLuint * texName);

#endif

loadTexture.cpp

-13-

课题名称:Solar System太阳系 学生姓名:曾睿 学生学号:0643111150

#include #include #include #include #include #include \

void LoadBmp(char *filename, TEXTUREIMAGE *textureImg) // 载入图片 {

int i, j; FILE *file; BMPFILEHEADER bmpFile; BMPINFOHEADER bmpInfo; int pixel_size; // 初始化纹理数据 textureImg->imgWidth = 0; textureImg->imgHeight = 0; if (textureImg->data != NULL) { delete []textureImg->data; } // 打开文件 file = fopen(filename, \ if (file == NULL) { return; } // 获取文件头 rewind(file); fread(&bmpFile, sizeof(BMPFILEHEADER), 1, file); fread(&bmpInfo, sizeof(BMPINFOHEADER), 1, file); // 验证文件类型 if (bmpFile.bfType != 0x4D42) { return; } // 获取图像色彩数 pixel_size = bmpInfo.biBitCount >> 3;

-14-

课题名称:Solar System太阳系 学生姓名:曾睿 学生学号:0643111150

// 读取文件数据 textureImg->data = new unsigned char[bmpInfo.biWidth * bmpInfo.biHeight * pixel_size]; for(i = 0 ; i < bmpInfo.biHeight; i++) { fseek(file, bmpFile.bfOffBits + (bmpInfo.biHeight - i - 1) * bmpInfo.biWidth * pixel_size, SEEK_SET); for (j = 0; j < bmpInfo.biWidth; j++) { // 红色分量 fread(textureImg->data + (i * bmpInfo.biWidth + j) * pixel_size + 2, sizeof(unsigned char), 1, file); // 绿色分量 fread(textureImg->data + (i * bmpInfo.biWidth + j) * pixel_size + 1, sizeof(unsigned char), 1, file); // 蓝色分量 fread(textureImg->data + (i * bmpInfo.biWidth + j) * pixel_size + 0, sizeof(unsigned char), 1, file); // Alpha分量 if (pixel_size == 4) { fread(textureImg->data + (i * bmpInfo.biWidth + j) * pixel_size + 3, sizeof(unsigned char), 1, file); } } } // 记录图像相关参数 textureImg->imgWidth = bmpInfo.biWidth; textureImg->imgHeight = bmpInfo.biHeight; textureImg->byteCount = pixel_size; fclose(file); }

void MakeTexture(TEXTUREIMAGE textureImg, GLuint * texName) //转换为纹理 {

glPixelStorei(GL_UNPACK_ALIGNMENT, 1); glGenTextures(1,texName);

-15-


计算机图形学课程设计报告 - 范文.doc 将本文的Word文档下载到电脑
搜索更多关于: 计算机图形学课程设计报告 - 范文 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219