D3D9学习笔记之渲染状态关键字

**

device->SetRenderState()

** D3D9的视频卡设备的渲染状态设置方法
下面是一部分可设置的渲染状态:
D3DRS_FILLMODE 绘制模式设置,可设置为点,线与面模式3种分别是:(D3DFILL_POINT , D3DFILL_WIREFRAME, D3DFILL_SOLID)

D3DRS_CULLMODE 消隐模式,按照三角形单元的顶点绕序进行背面消隐,可设置为(禁用背面消隐D3DCULL_NONE,对顺时针绕序消隐D3DCULL_CW,对逆时针绕序消隐D3DCULL_CCW)

D3DRS_LIGHTING 光照开关,可设置为true与false,开启光照或禁用光照

D3DRS_SHADEMODE 着色模式 对顶点的着色模式分2种(平面着色,一个面的颜色根据第一个顶点的颜色值决定D3DSHADE_FLAT,平滑着色,一个面中根据各个顶点的颜色值计算线性插值着色D3DSHADE_GOURAUD,D3DSHADE_PHONG这个不知道是啥子,请指教,好像跟平滑着色一样效果)

D3DRS_ZWRITEENABLE 深度缓存是否可写入设置 默认为true,设为false为不应许写入,设为false后渲染几个模型时将随渲染的时间决定哪个模型在最前(可见)

D3DRS_NORMALIZENORMALS 规范化法向量,默认为不打开,设true为开启,false为关闭,使用了自定义的顶点格式中有使用法向量的需要开启

D3DRS_SPECULARENABLE 启用镜面光,true为开,false为关闭,默认为关闭,因为镜面光为反射光,其计算成本高

D3DRS_ALPHABLENDENABLE 打开融合,true为开,false为关闭,默认为关闭,使用融合能做出隐身的效果

D3DRS_SRCBLEND 设定融合因子,使用不同的融合因子和目标融合因子可以做出很多有趣的事情

D3DRS_DESTBLEND 设定目标融合因子,同上面的组合才能做出很多有趣的事情

device->SetTransform()设置渲染状态之矩阵

下面是我用过的一些状态字:
D3DTS_PROJECTION :设置投影矩阵,将一个透视投影矩阵设置为当前的可观察到的范围,形状及可见度,例如:

	D3DXMATRIX touying;
	D3DXMatrixPerspectiveFovLH(&touying, D3DX_PI * 0.5f, dm.Width / dm.Height, 1.0f, 1000.0f);//将投影数据写入矩阵proj  D3DX_PI*0.5f
	device->SetTransform(D3DTS_PROJECTION, &touying);			//设置投影矩阵

D3DTS_VIEW :设置观察坐标系,告诉视频卡设备,摄像机在哪个位置,摄像机以哪个点为观察中心,世界坐标系中哪个方向是向上(世界正方向),例如:摄像机在世界坐标系中Z轴的负9点,以世界坐标系0,0,0的点为观察中心,y轴的正方向是世界正方向,代码如下

	D3DXVECTOR3 SXJx{ 0,0,-9 }, SXJy{ 0,0,0 }, SXJz{ 0,1,0 };	//摄像机位置,观察点,世界正方向
	D3DXMATRIX SXJZD;											//摄像机矩阵
	D3DXMatrixLookAtLH(&shexiangji, &SXJx, &SXJy, &SXJz);		//合并成一个摄像机矩阵
	device->SetTransform(D3DTS_VIEW, &shexiangji);				//告诉D3D9使用这个观察坐标系

D3DTS_WORLD :设置世界变换矩阵,告诉视频卡设备,把接下来要渲染的模型按照当前设置的矩阵位移,例如在渲染一个物体前,设置一个向x轴的正方向移动5个单位,在接下来渲染的模型都将移动到这个位置,代码如下:

	D3DXMATRIX ss;
	D3DXMatrixTranslation(&ss, 5.0f, 0.0f, 0.0f);				//创建一个平移矩阵
	device->SetTransform(D3DTS_WORLD, &ss);						//世界变化

目前我就知道这些可设置的渲染状态,还有很多不知道的,我是不会使用SDK的苦逼

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值