您的位置:首页 > 其它

Direct3D学习手记三:绘制彩色3D物体

2013-12-23 13:38 387 查看
本文是在上一篇的基础上做一些锦上添花的事:为物体添加色彩

原理:在设置顶点格式的时候给其一个色彩分量D3DFVF_DIFFUSE

这里重点介绍一下Diret3D里的常用灵活顶点格式

1.D3DFVF_DIFFUSE指示顶点具有颜色(DWORD,ARGB顺序)

2.D3DFVF_NORMAL指示顶点具有法向量(float nx,ny,nz)

3.D3DFVF_XYZ指示顶点坐标(float x,y,z)

4.D3DFVF_TEX1到D3DFVF_TEX8指示顶点的纹理坐标,用于贴图

必须遵循特定的定义顺序:三维坐标->法向量->颜色->纹理坐标

上次的顶点格式只为其指定了三维坐标:灵活顶点格式为D3DFVF_XYZ

//自定义顶点格式
typedef struct VERTEX
{
FLOAT	_x,_y,_z;//三维坐标
VERTEX(FLOAT x,FLOAT y,FLOAT z)
:_x(x),_y(y),_z(z){}
const static DWORD FVF;//格式
}VERTEX;
const DWORD VERTEX::FVF=D3DFVF_XYZ;


此次我们只为顶点添加了色彩分量,以下即为顶点数据结构:灵活顶点格式为D3DFVF_XYZ|D3DFVF_DIFFUSE

//自定义顶点格式
typedef struct VERTEX
{
FLOAT	_x,_y,_z;//三维坐标
DWORD _color;//顶点颜色
VERTEX(FLOAT x,FLOAT y,FLOAT z,DWORD color)
:_x(x),_y(y),_z(z),_color(color){}
const static DWORD FVF;//格式
}VERTEX;
const DWORD VERTEX::FVF=D3DFVF_XYZ|D3DFVF_DIFFUSE;


在顶点初始化时使用宏D3DCOLOR_XRGB(r,g,b)设置颜色,如:

pVertices[0]=VERTEX(-1.0F,1.0F,1.0F,D3DCOLOR_XRGB(255,0,0));


另外,在Setup时要设置绘制状态将光照关闭,否则仍为黑色

//关闭光照,否则仍为黑色
g_pd3dDevice->SetRenderState(D3DRS_LIGHTING,FALSE);


程序运行结果:



详细代码可以参考上一篇或者下载本次的工程文件。

源代码及工程文件下载地址:

百度网盘
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: