- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
NeHeOpenGL第二十九课:Blt函数
NeHe OpenGL第二十九课:Blt函数
2010-08-23 22:10:19
标签: HYPERLINK /tagindex.php?keyword=Blt \t _blank Blt HYPERLINK /tagindex.php?keyword=OpenGL \t _blank OpenGL HYPERLINK /tagindex.php?keyword=NeHe \t _blank NeHe HYPERLINK /tagindex.php?keyword=%BA%AF%CA%FD \t _blank 函数
原创作品,允许转载,转载时请务必以超链接形式标明文章 HYPERLINK /1130898/381869 \t _blank 原始出处 、作者信息和本声明。否则将追究法律责任。 HYPERLINK /1130898/381869 /1130898/381869
NeHe OpenGL第二十九课:Blt函数
Blitter 函数:
类似于DirectDraw的blit函数,过时的技术,我们有实现了它。它非常的简单,就是把一块纹理贴到另一块纹理上。
这篇文章是有Andreas Lffler所写的,它写了一份原始的教程。过了几天,Rob Fletcher发了封邮件给我,他重新改写了所有的代码,我在它的基础上把glut的框架变换为Win32的框架。 现在让我们开始吧!
下面是一个保存图像数据的结构 typedef struct Texture_Image{int width; // 宽int height; // 高int format; // 像素格式unsigned char *data; // 纹理数据} TEXTURE_IMAGE;
接下来定义了两个指向这个结构的指针 typedef TEXTURE_IMAGE *P_TEXTURE_IMAGE;
P_TEXTURE_IMAGE t1; // 指向保存图像结构的指针P_TEXTURE_IMAGE t2; // 指向保存图像结构的指针
下面的函数为w*h的图像分配内存 P_TEXTURE_IMAGE AllocateTextureBuffer( GLint w, GLint h, GLint f){P_TEXTURE_IMAGE ti=NULL; unsigned char *c=NULL; ti = (P_TEXTURE_IMAGE)malloc(sizeof(TEXTURE_IMAGE)); // 分配图像结构内存
if( ti != NULL ) {ti-width = w; // 设置宽度ti-height = h; // 设置高度ti-format = f; // 设置格式// 分配w*h*f个字节c = (unsigned char *)malloc( w * h * f); if ( c != NULL ) {ti-data = c;}else {MessageBox(NULL,内存不足,分配图像内存错误,MB_OK | MB_ICONINFORMATION);return NULL;}}
else{MessageBox(NULL,内存不足,分配图像结构内存错??,MB_OK | MB_ICONINFORMATION);return NULL;}return ti; // 返回指向图像数据的指针}
下面的函数释放分配的内存 // 释放图像内存void DeallocateTexture( P_TEXTURE_IMAGE t ){if(t){if(t-data){free(t-data); // 释放图像内存}
free(t); // 释放图像结构内存}}
下面我们来读取*.raw的文件,这个函数有两个参数,一个为文件名,另一个为保存文件的图像结构指针。 // 读取*.RAW文件,并把图像文件上下翻转一符合OpenGL的使用格式。int ReadTextureData ( char *filename, P_TEXTURE_IMAGE buffer){FILE *f;int i,j,k,done=0;int stride = buffer-width * buffer-format; // 记录每一行的宽度,以字节为单位unsigned char *p = NULL;
f = fopen(filename, rb); // 打开文件if( f != NULL ) // 如果文件存在{
如果文件存在,我们通过一个循环读取我们的纹理,我们从图像的最下面一行,一行一行的读取图像。 for
您可能关注的文档
- 二轮复习高中数学方法——同一法.doc
- 读后感窦宝荣.doc
- 鸿瑞信息孤岛解决方案.doc
- 学术影响因子.doc
- 2011少先队大队.doc
- 基于单片机控制的温度智能控制系统.doc
- 五年级数学竞赛练习题.doc
- 关于货币政策相关问题的理论综述.doc
- 对数的概念-教案最初版.doc
- 面试准备一.doc
- 《GB/T 12668.7202-2024调速电气传动系统 第7-202部分:电气传动系统的通用接口和使用规范 2型规范说明》.pdf
- 《GB/T 15692-2024制药机械 术语》.pdf
- GB/T 15692-2024制药机械 术语.pdf
- 中国国家标准 GB/T 15692-2024制药机械 术语.pdf
- GB/T 19633.1-2024最终灭菌医疗器械包装 第1部分:材料、无菌屏障系统和包装系统的要求.pdf
- 中国国家标准 GB/T 19633.1-2024最终灭菌医疗器械包装 第1部分:材料、无菌屏障系统和包装系统的要求.pdf
- 《GB/T 19633.1-2024最终灭菌医疗器械包装 第1部分:材料、无菌屏障系统和包装系统的要求》.pdf
- 《GB/T 30117.1-2024非相干光产品的光生物安全 第1部分:通用要求》.pdf
- 《GB/T 33348-2024高压直流输电用电压源换流器阀 电气试验》.pdf
- GB/T 33348-2024高压直流输电用电压源换流器阀 电气试验.pdf
文档评论(0)