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

本文是在上一篇的基础上做一些锦上添花的事:为物体添加色彩

原理:在设置顶点格式的时候给其一个色彩分量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);


程序运行结果:


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


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

百度网盘

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值