一.颜色表示:
RGB,这三个分量的加性混合additive mixing 决定了最终的颜色
RGB数据可用两种不同的结构来保存,第一种是D3DCOLOR,它实际上与DWORD类型完全相同(由关键字typedf 定义),共有32位.
D3DCOLOR_ARGB宏帮助我们完成D3DCOLOR类型的位运算.
D3DCOLOR_XRGB是表示没有alpha参数的D3DCOLOR_ARGB
D3DCOLOR包含了一系列的重载运算
const D3DXCOLOR WHITE( D3DCOLOR_XRGB(255, 255, 255) );
const D3DXCOLOR BLACK( D3DCOLOR_XRGB( 0, 0, 0) );
二.顶点颜色
图元的颜色由构成该图元的顶点的颜色所决定,
struct ColorVertex {
float x, y, z;
D3DCOLOR color;
static const DWORD FVF;
}
const DWORD ColorVertex::FVF = D3DFVF_XYZ | D3DFVF_DIFFUSE;
以上为灵活顶点格式
三.着色:
着色规定了如何利用顶点的颜色来计算构成图元的像素的颜色.
平面着色flat shading : 只使用图元第一个顶点所指定的颜色
平滑Gourand shading :图元中各像素的颜色值由各顶点的颜色经线性插值得到
设置着色的状态机:
device->SetRendState(D3DRS_SHADEMODE, D3DSHADE_FLAT)
device->SetRendState(D3DRS_SHADEMODE, D3DSHADE_GOURAUD)
四.着色的几个要点:
m_pDevice->SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID);
m_pDevice->SetRenderState(D3DRS_LIGHTING, false);
五.代码
http://download.csdn.net/source/1844097