交互媒体设计(拓展) 交互媒体设计(拓展) 7_1Direct3D中的颜色(一).pptVIP

交互媒体设计(拓展) 交互媒体设计(拓展) 7_1Direct3D中的颜色(一).ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Part Ⅱ Direct3D的基础知识 四 Direct3D中的颜色 给三角形表面涂上颜色 主要目标 1.学习Direct3D中颜色的表示方法 2.了解三角形上的着色过程 1 颜色的描述方法 Direct3D中用一个RGB三元组来表示颜色 每种元素都对应着一个具体值,三种元素的组合可表示2的24次方种颜色 D3D中用两种不同的数据类型来表示颜色数据: D3DCOLOR D3DCOLORVALUE 例: D3DCOLOR color; D3DCOLORVALUE colorvalue; D3DCOLOR typedef DWORD D3DCOLOR; 每一个分量是8位二进制,即一个字节 所以每个分量的取值范围为[0, 255],数值越高,亮度也越高 怎么给D3DCOLOR类型赋值呢? 难道是 D3DCOLOR color =0101010110101010 ????? ↑↑↑ 32位二进制 当然不是,D3D提供了D3DCOLOR_ARGB宏(macro) D3DCOLOR_ARGB 宏的定义: #define D3DCOLOR_ARGB(a,r,g,b) \ ((D3DCOLOR)((((a)0xff)24)|(((r)0xff) \ 16)|(((g)0xff)8)|((b)0xff))) D3DCOLOR_ARGB的用法 用法: D3DCOLOR brightRed = D3DCOLOR_ARGB(255, 255, 0, 0); 按照ARGB的顺序指定各分量的数值 注意: 取值范围是[ 0, 255 ] D3DCOLOR_XRGB 另一个选择 特点: 不需要设置alpha分量 #define D3DCOLOR_XRGB(r,g,b) D3DCOLOR_ARGB(0xff,r,g,b) D3DCOLORVALUE 另外一个定义颜色变量的方法 typedef struct _D3DCOLORVALUE? { float?r; float?g; float?b; float?a; } D3DCOLORVALUE; 注意: 分量的取值范围是[ 0.0, 1.0 ] 用法 D3DCOLORVALUE color = { 0.0,1.0,0.0,0.0 }; 与定义其他的结构变量一样 D3DXCOLOR 由D3DX库提供 数据成员与D3DCOLORVALUE相同,都是4个浮点数 有一些好用的构造函数,及重载了运算符 颜色向量 D3DCOLORVALURE和D3DXCOLOR结构都拥有四个浮点值的颜色分量 可以把颜色值看成一个4D向量(r,g,b,a) 所以,可以进行向量运算 注意: 点乘和叉乘对颜色向量没有意义 每分量相乘 component-wise multiplication 两个颜色向量之间的相乘所进行的就是每分量相乘 代码片断 const D3DXCOLOR WHITE( D3DCOLOR_XRGB(255, 255, 255) ); 我们可以在代码中定义颜色对象,以方便使用 用const定义常量,C++中的常见用法 顶点颜色 图元的颜色是由组成图元的顶点颜色决定 要表示颜色,就得在顶点结构中加入颜色分量 顶点结构中用一个D3DCOLOR类型的数据来表示颜色值(32bit) 代码片断 加入了颜色分量后的顶点结构 struct ColorVertex { float _x, _y, _z; D3DCOLOR _color; static const DWORD FVF; } const DWORD ColorVertex::FVF = D3DFVF_XYZ | D3DFVF_DIFFUSE; 2 三角形上的着色处理 着色 shading 着色发生在光栅化阶段 作用: 根据顶点颜色,决定三角形上各像素的颜色 主要着色模型: 平面着色(flat shading)和高洛德着色(Gouraud shading) 两种着色方法的区别 平面着色:三角形顶点间像素的颜色没有平滑过渡,取决于第一个顶点的颜色 高洛德着色: 三角形顶点间的各像素的颜色值是通过顶点颜色的线性内插所决定的 注意: 一般使用的是高洛德着色,因为效果较好 两种着色方法的区别 着色方法的转换 //设置为平面模式 Device-SetRenderState (D3DRS_SHADMODE, D3DSHADE_FLAT); //设置为高洛德模式 Device-SetRenderState (D3DRS_SHADMODE, D3DSHADE_GOURA

您可能关注的文档

文档评论(0)

WanDocx + 关注
实名认证
文档贡献者

大部分文档都有全套资料,如需打包优惠下载,请留言联系。 所有资料均来源于互联网公开下载资源,如有侵权,请联系管理员及时删除。

1亿VIP精品文档

相关文档