[DirectX 9.0笔记] 第四章 色彩

1.表示方法

在Direct3D中,色彩的常用表示方法有两种,一种是D3DCOLOR结构来表示色彩,它实际上是一个DWORD即32位。D3DCOLOR分为4部分,每部分8位,分别是alpha、red、green、blue。各颜色取值范围是0-255。

对D3DCOLOR的初始化和复制,常用的方式是用D3DCOLOR_ARGB来完成。例如:

第二种存储颜色的结构是D3DCLORVALUE。在这个结构中,使用0-1的浮点数来表示每一部分的亮度值,但顺序不同于D3DCOLOR,D3DCOLORVALUE各部分的顺序是red、green、blue和alpha。

D3DXCOLOR的初始化函数:

在d3dUtility.h中定义了一些全局演示常量。

   

2.着色处理

着色处理发生在光栅化和指定图元上的顶点颜色怎样被计算成像素颜色之间。有两种着色处理模式可用:

  • 平面着色(flat shading)
  • 高洛德着色(Gouraud shading)

平面着色,图元像素的颜色是均匀的,且就是指定图元第一个顶点的颜色。因此一旦三角形的第一个顶点被指定成红色,那么它的其他三个顶点也将会是红色。通过使用平面着色来为第二和第三个顶点着色。

平面着色使物体呈现是斑驳的,因为没有从一个颜色到另一个颜色的平滑过渡。一个更好的着色模式叫做高洛德着色(也被叫做平滑着色)。高洛德着色,图元表面的颜色是由每个顶点通过线性插值来赋予。

下图显示了分别使用平面着色和高洛德着色处理的红色三角形

就象Direct3D中很多东西一样,着色处理模式是受Direct3D设置状态决定的。

   

原文地址:https://www.cnblogs.com/wangke1020/p/3686001.html