清华大学DirectX游戏编程第5章(全20章)

清华大学DirectX游戏编程第5章(全20章)

ID:37607198

大小:481.50 KB

页数:12页

时间:2019-05-13

清华大学DirectX游戏编程第5章(全20章)_第1页
清华大学DirectX游戏编程第5章(全20章)_第2页
清华大学DirectX游戏编程第5章(全20章)_第3页
清华大学DirectX游戏编程第5章(全20章)_第4页
清华大学DirectX游戏编程第5章(全20章)_第5页
资源描述:

《清华大学DirectX游戏编程第5章(全20章)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第5章颜色在本章中,将继续学习如何渲染带颜色的实心物体。主要目标:学习如何在Direct3D中描述颜色。掌握在三角形上的着色过程。25.1颜色的描述方法在Direct3D中,颜色通过一个RGB三元数来描述。其主要思想是,通过指定红、绿、蓝三原色的具体数值来描述颜色。经常使用两种不同类型的数据来保存RGB数据,第一种是D3DCOLOR类型,该结构由一个32位的DWORD类型数据来表示,其中每8位组成一个段,用来存储一个颜色分量,如图5.1所示。35.1颜色的描述方法Direct3D提供了一个称为D3DCOLOR_ARGB的宏用于完成这些操作,该宏通过4个参数,分别指定3个颜色分量和Al

2、pha分量的值,所有参数的值都必须处于0~255之内,例如:D3DCOLORbrightRed=D3DCOLOR_ARGB(255,255,0,0);D3DCOLORsomeColor=D3DCOLOR_ARGB(255,144,87,201);45.1颜色的描述方法另外一个用于保存颜色值的结构是D3DCOLORVALUE,在该结构中使用浮点数来表示分量,但是颜色分量的范围在0.0~1.0之间,1.0表示最高亮度。此结构定义如下:typedefstruct_D3DCOLORVALUE{floatr;//红色,0.0~1.0floatg;//绿色,0.0~1.0floatb;//蓝色,

3、0.0~1.0floata;//Alpha值,0.0~1.0}D3DCOLORVALUE;55.1颜色的描述方法另外还可以使用D3DXCOLOR结构,它的数据成员与D3DCOLORVALUE相同,但是它提供了非常有用的构造函数和重载操作符,这样就使得对颜色的操作变得简单。D3DXCOLOR结构的定义如下:参见教材P88现在需要更改d3dUtility.h文件,加入一些全局的颜色定义:namespaced3d{...constD3DXCOLORWHITE(D3DCOLOR_XRGB(255,255,255));constD3DXCOLORBLACK(D3DCOLOR_XRGB(0,0,

4、0));constD3DXCOLORRED(D3DCOLOR_XRGB(255,0,0));constD3DXCOLORGREEN(D3DCOLOR_XRGB(0,255,0));constD3DXCOLORBLUE(D3DCOLOR_XRGB(0,0,255));constD3DXCOLORYELLOW(D3DCOLOR_XRGB(255,255,0));constD3DXCOLORCYAN(D3DCOLOR_XRGB(0,255,255));constD3DXCOLORMAGENTA(D3DCOLOR_XRGB(255,0,255));}65.2顶点颜色图元的颜色是由顶点颜色决定

5、。顶点颜色结构的定义如下:structColorVertex{float_x,_y,_z;D3DCOLOR_color;staticconstDWORDFVF;}constDWORDColorVertex::FVF=D3DFVF_XYZ

6、D3DFVF_DIFFUSE;75.3着色处理着色在光栅化时进行处理,主要用于通过顶点颜色来计算得到组成图元的像素的颜色值。现在使用的着色模型主要有两种:平面着色和Gouraud着色。平面着色使渲染出来的图元看起来很死板,因为颜色之间没有平滑过渡。还有一个更好的着色模式就是Gouraud模式。图5.2是分别使用两种模式渲染出来的三角形的对比。85.3

7、着色处理与许多其他特性一样,Direct3D中的着色模式也通过渲染状态来控制://设置为平面模式Device->SetRenderState(D3DRS_SHADMODE,D3DSHADE_FLAT);//设置为内插模式Device->SetRenderState(D3DRS_SHADMODE,D3DSHADE_GOURAUD);95.4示例:带颜色的三角形本章的例子展示了如何使用平面着色模式以及Gouraud着色模式来渲染带颜色的三角形,在程序中首先声明两个全局变量:D3DMATRIXWorld;IDirect3DVertexBuffer9*Triangle=0;World是用来保

8、存对三角形进行世界变换的矩阵,Triangle是储藏三角形顶点信息的顶点缓冲区。105.4示例:带颜色的三角形Setup函数中创建了一个顶点缓冲区,再通过带颜色的三角形顶点信息去填充缓冲区。函数的具体定义如下:参见教材P92在Display函数中对同一个三角形使用不同的着色模式,并在不同的地方渲染两次,三角形的位置是通过不同的世界矩阵来控制的。函数的定义如下:参见教材P93115.5小结颜色通过红、绿、蓝三种颜色值的组合来描述,通过设置不同的组合可以得到各

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

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

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