论简化三维流水线和逼近真实流水线快速构造引擎

论简化三维流水线和逼近真实流水线快速构造引擎

ID:17859046

大小:418.50 KB

页数:16页

时间:2018-09-07

论简化三维流水线和逼近真实流水线快速构造引擎_第1页
论简化三维流水线和逼近真实流水线快速构造引擎_第2页
论简化三维流水线和逼近真实流水线快速构造引擎_第3页
论简化三维流水线和逼近真实流水线快速构造引擎_第4页
论简化三维流水线和逼近真实流水线快速构造引擎_第5页
资源描述:

《论简化三维流水线和逼近真实流水线快速构造引擎》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、论简化三维流水线和逼近真实流水线快速构造引擎(三)第一部分、基础设施http://bbs.gameres.com/showthread.asp?threadid=93004第二部分、光照和Gouraud着色http://bbs.gameres.com/showthread.asp?threadid=94056第三部分解决方案http://pickup.mofile.com/9552663066148164第四部分预告:裁剪、1/Z深度修正、深度缓存、碰撞和物理系统第三部分、UV仿射贴图、材质混合、文件操作图3-1、将光照和贴

2、图进行了材质混合图3-2、使用z缓冲来执行像素级排序,使物体得于正确渲染目前还没有涉及裁剪,因此对于一些离相机过近以至发生负投影的多边形被简单地剔除了。视景体的其它5个面则被简单地利用光栅化函数过滤了。这类似于硬件的工作模式,因为它足够简单并且可以假设我们可以在以后事先执行了裁剪,这样光栅化函数只是提供了判断的开销,这对于不执行这样的任务的灾难性后果来讲是值得的。一、Bmp位图格式和读取位图信息为了把贴图放置到网格上,首先要解决的问题是使用什么图像格式和定义它的内存镜像格式。当前最简单的图像格式是bmp。我使用了它的8位和2

3、4位版本。8位因为信息量不足(仅仅256个定义长度),所以引入了调色板的形式。而24位色版本则提供了全部的RGB信息。执行贴图运算的时候,为了要立即得到有用的RGB信息,调色板索引应该在读取位图之后进行转换,和24位色版本一致。这是当前的硬件条件所允许和显示模式所决定的。因此,所有的各种图像格式最终都要转化成一致的内存镜像格式。对于文件操作,我使用了fstream流,这是C++的标准文件IO操作流,是STL(标准模板库)的一部分,现代编程需要程序员更快地解决问题,模板化为这一切作了大量的工作,C++并不意味着总是使用类结构,

4、事实上,模板化范型编程正在成为C++编程的事实标准。设想,一个数组可能是包容字符的或者是浮点类型的数据集,而vector则替代了数组,没有指针操作,它使用了迭代器。原始的C++语言对于类内部类型是严格定义好的,假设有一个Cvector类,它可能只接受整型数据,但是vector接受任何你想要存放的类型,使用vector作为类型符号。并且可以使用和指针相同的偏移模式进行迭代,它的size()子函数提供迭代限制。fstreamf;f.open(filename.c_str(),ios_base::in

5、ios_base

6、::binary);if(!f){f.close();return-1;}//读取文件头f.read((char*)&bmf.bmfh,sizeof(BITMAPFILEHEADER));f.close();ios_base枚举了fstream可能会用到的各种限定符,open()第二个参数需要指定打开类型,有一些有用的枚举:ios_base::in读操作ios_base::out写操作ios_base::app追加写入ios_base::ate添入ios_base::binary二进制ios_base::trunc截断读写操

7、作子函数:write()写数据read()读数据get()获取字符/字符串getline()获取一行字符串位图格式:BitmapFileFormat1、镜像文件:#definePALETTEENTRYS256typedefstruct{BITMAPFILEHEADERbmfh;BITMAPINFOHEADERbmih;PALETTEENTRYpalette[PALETTEENTRYS];BYTE*bits;intsize;intwidth;intheight;intbitcount;intbpp;intpitch;}BITM

8、APFILE;真实文件数据不包含BYTE*bits后面的数据,那是为了访问方便而人为加上的。2、文件头BITMAPFILEHEADERtypedefstructtagBITMAPFILEHEADER{WORDbfType;DWORDbfSize;WORDbfReserved1;WORDbfReserved2;DWORDbfOffBits;}BITMAPFILEHEADER,FAR*LPBITMAPFILEHEADER,*PBITMAPFILEHEADER;有用的数据是bfType,应该为0x4d42,即“BM”,bfSize

9、,指出文件头结构大小,bfOffBits:缓冲区数据的起始处相对于文件开头的偏移量3、文件信息BITMAPINFOHEADERtypedefstructtagBITMAPINFOHEADER{DWORDbiSize;LONGbiWidth;LONGbiHeight;WORDbiPlanes

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。