【Visual C++】IDirect3DDevice::SetRenderState() 参数详解

IDirect3DDevice::SetRenderState() 参数详解

 

原文地址:http://blog.sina.com.cn/s/blog_515326f90100ih81.html      

 

DDRS_ZENABLE 用于控制深度缓存的状态。它的状态是用一个枚举类型来表示的:D3DZB_TRUE、D3DZB_FALSE   和D3DZB_USEW。在D3D中z-buffering 是对z轴上的信息起作用,所以,如果你需要表示的是2D信息的话,可以用pd3dDevice->SetRenderState( D3DRS_ZENABLE, D3DZB_FALSE ); 关闭z-buffering。比如游戏中的UI,需要用到一些控制面板之类的DD,这个时候就是需要关闭它的。这个渲染参数的默认值是跟 D3DPRESENT_PARAMETERS 中的EnableAutoDepthStencil的值是相关联的;如果这个值是TRUE,那么渲染状态就是 D3DZB_TRUE,反之为D3DZB_FALSE。

D3DRS_FILLMODE 从名字看的话,这个渲染模式是用来;控制填充模式的,它的值也是一个枚举类型 D3DFILL_POINT、D3DFILL_WIREFRAME和D3DFILL_SOLID。默认值是D3DFILL_SOLID,不过这个值的作用现在还没有看出来。:P

D3DRS_SHADEMODE 这个参数控制的是阴影模式,默认值是 D3DSHADE_GOURAND,翻译过来一般是叫做 高络德渲染。另外两个 D3DSHADE_FLAT 和 D3DSHADE_PHONG。高络德阴影模式是对一个三角形的3个顶点的颜色进行线性叉值算法得到的。平面阴影模式只利用三角形的第一个顶点进行描述。很显然用D3DSHADE_GOURAND渲染方式可以得到更加逼真的阴影效果。

D3DRS_ZWRITEENABLE 默认值TRUE表示可以写深度缓存,这个参数可以保护深度缓存不被系统修改。深度比对规则是依照D3DRS_ZFUNC参数的,如果值为FALSE的话,假设深度缓存被修改,但是这个值却不能写进缓存。

D3DRS_ALPHATESTENABLE 这个参数将允许每个象素点都做alpha测试;如果测试通过的话,这个象素就会被帧缓存处理,否则的话,它会被所有帧缓存忽略掉。这个测试其实就是通过D3DRS_ALPHAFUNC参数提供的对比函数,比较输入的alpha值和参照值之间的差别,这个参照值是由D3DRS_ALPHAREF参数确定的,默认值是FALSE。

D3DRS_LASTPIXEL 默认值是TRUE,绘制一条线的最后一个象素,如果是FALSE,就是不画。这个参数的主要作用是在绘制线框的时候体现出来的,假设我们要画一个矩形边框,有时候,矩形的两条线段的端点会出现重叠的现象,影响效果,这个时候,你可以把这个参数设为FALSE;但是要注意的是,除非你有明确的目的,一般不要轻易修改这个参数的值,它可能导致线框的结合处出现断开的现象。

D3DRS_SRCBLEND 和 D3DRS_DESTBLEND 是用来设定支持的混合模式。

D3DRS_CULLMODE 这个参数用来指定三角形背面的剔除方式。它的值是一个D3DCULL类型的枚举类型。D3DCULL_NONE,不要剔除背面;D3DCULL_CW,按照顺时针的方向的顶点剔除背面;D3DCULL_CCW,按照逆时针方向剔除背面。而最后一个就是默认值,还没弄清楚区别在什么地方。

D3DRS_ZFUNC 这个参数在前面有提到,与D3DRS_ZWRITTENABLE有些关联。它的值是 D3DCMPFUNC 枚举类型的值;默认值是 D3DCMP_LESSEQUAL。它允许程序根据一个象素距离摄像机的长度来接受或者拒绝它。这个象素的深度值会与depth-buffer的值进行比较,如果通过了这个测试,这个象素就会被写。实际上,如果象素没有通过测试的话,软件光栅处理和很多硬件加速都会更加快一些,因为不要渲染象素的话,就不需要对纹理进行过滤和调节。

D3DRS_ALPHAREF 设定象素alpha测试的参考值,它的值是一个DWORD型的低8位,区间是从0x00000000到0x000000ff。默认值是0。

D3DRS_ALPHAFUNC 这个参数允许程序根据象素的alpha值来决定是否接受。类似D3DRS_ZFUNC。

D3DRS_DITHERENABLE 使程序允许抖动,默认是FALSE。

D3DRS_ALPHABLENDENABLE 允许使用alpha混合,默认是FALSE。而混合类型是由D3DRS_SRCBLEND 和 D3DRS_DESTBLEND决定的。

D3DRS_FOGENABLE 允许烟雾混合,也就是常说的烟雾效果。默认FALSE。

D3DRS_SPECULARENABLE 打开镜面反射效果,默认是FALSE。

D3DRS_FOGCOLOR 设定烟雾颜色。

D3DRS_FOGTABLEMODE 这个烟雾公式被用来计算象烟雾,设定烟雾模式,默认值是D3DFOG_NONE,另外还有D3DFOG_EXP,D3DFOG_EXP2,D3DFOG_LINEAR。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录: 第Ⅰ部分 基础知识 必备的数学知识 3D空间中的向量 向量相等 计算向量的长度 向量的规范化 向量加法 向量减法 数乘 点积 叉积 矩阵 矩阵相等、矩阵数乘和矩阵加法 矩阵乘法 单位矩阵 逆矩阵 矩阵的转置 D3DX矩阵 基本变换 平移矩阵 旋转矩阵 比例变换矩阵 几何变换的组合 向量变换的一些函数 平面(选读) D3DXPLANE 点和平面的空间关系 平面的创建 平面的规范化 平面的变换 平面中到某一点的最近点 射线(选读) 射线 射线与平面的相交 小结    第Ⅱ部分 Direct3D基础 第1章 初始化Direct3D 1.1 Direct3D概述 1.1.1 REF设备 1.1.2 D3DDEVTYPE 1.2 COM(组件对象模型) 1.3 预备知识 1.3.1 表面 1.3.2 多重采样 1.3.3 像素格式 1.3.4 内存池 1.3.5 交换链和页面置换 1.3.6 深度缓存 1.3.7 顶点运算 1.3.8 设备性能 1.4 Direct3D的初始化 1.4.1 获取接口IDirect3D9的指针 1.4.2 校验硬件顶点运算 1.4.3 填充D3DPRESENT_PARAMETER结构 1.4.4 创建IDirect3DDevice9 接口 1.5 例程:Direct3D的初始化 1.5.1 d3dUtility.h/cpp 1.5.2 例程框架 1.5.3 例程:D3D初始化 1.6 小结 第2章 绘制流水线 2.1 模型表示 2.1.1 顶点格式 2.1.2 三角形单元 2.1.3 索引 2.2 虚拟摄像机 2.3 绘制流水线 2.3.1 局部坐标系 2.3.2 世界坐标系 2.3.3 观察坐标系 2.3.4 背面消隐 2.3.5 光照 2.3.6 裁剪 2.3.7 投影 2.3.8 视口变换 2.3.9 光栅化 2.4 小结 第3章 Direct3D中的绘制 3.1 顶点缓存与索引缓存 3.1.1 创建顶点缓存和索引缓存 3.1.2 访问缓存内容 3.1.3 获取顶点缓存和索引缓存的信息 3.2 绘制状态 3.3 绘制的准备工作 3.4 使用顶点缓存和索引缓存进行绘制 3.4.1 IDirect3DDevice9::DrawPrimitive 3.4.2 IDirect3DDevice9::DrawIndexedPrimitive 3.4.3 Begin/End Scene 3.5 D3DX几何体 3.6 例程:三角形、立方体、茶壶、D3DXCreate* 3.7 小结 第4章 颜色 4.1 颜色表示 4.2 顶点颜色 4.3 着色 4.4 例程:具有颜色的三角形 4.5 小结 第5章 光照 5.1 光照的组成 5.2 材质 5.3 顶点法线 5.4 光源 5.5 例程:光照 5.6 一些附加例程 5.7 小结 第6章 纹理映射 6.1 纹理坐标 6.2 创建并启用纹理 6.3 纹理过滤器 6.4 多级渐进纹理 6.4.1 多级渐进纹理过滤器 6.4.2 使用多级渐进纹理 6.5 寻址模式 6.6 例程:纹理四边形 6.7 小结 第7章 融合技术 7.1 融合方程 7.2 融合因子 7.3 透明度 7.3.1 Alpha通道 7.3.2 指定Alpha来源 7.4 用DirectX Texture Tool 创建Alpha通道 7.5 例程:透明效果 7.6 小结 第8章 模板 8.1 模板缓存的使用 8.1.1 模板缓存格式的查询 8.1.2 模板测试 8.1.3 模板测试的控制 8.1.4 模板缓存的更新 8.1.5 模板写掩码 8.2 例程:镜面效果 8.2.1 成像中的数学问题 8.2.2 镜面效果实现概述 8.2.3 代码解析 8.3 例程:Planer Shadows 8.3.1 平行光阴影 8.3.2 点光源产生的阴影 8.3.3 阴影矩阵 8.3.4 使用模板缓存防止二次融合 8.3.5 代码解析 8.4 小结 第Ⅲ部分 Direct3D的应用 第9章 字体 9.1 ID3DXFont接口 9.1.1 创建一个ID3DXFont 接口对象 9.1.2 绘制文本 9.1.3 计算每秒绘制的帧数 9.2 CD3DFont 9.2.1 创建CD3DFont类的实例 9.2.2 绘制文本 9.2.3 清理 9.3 D3DXCreateText函数 9.4 小结 第10章 网格(一) 10.1 几何信息 10.2 子集和属性缓存 10.3 绘制 10.4 网格优化 10.5 属性表 10.6 邻接信息 10.7 克隆 10.8 创建网格(D3DXCreateMeshFVF) 10.9 例程:网格的创建与绘制 10.10 小结 第11章 网格(二) 11.1 ID3DXBuffer 11.2 XFile 11.2.1 加载XFile文件 11.2.2 XFile材质 11.2.3 例程:XFile 11.2.4 生成顶点法线 11.3 渐进网格 11.3.1 生成渐进网格 11.3.2 顶点属性权值 11.3.3 ID3DXPMesh接口方法 11.3.4 例程:Progressive Mesh 11.4 外接体 11.4.1 一些新的特殊常量 11.4.2 外接体的类型 11.4.3 例程:Bounding Volumes 11.5 小结 第12章 设计一个灵活的Camera类 12.1 Camera类的设计 12.2 实现细节 12.2.1 观察矩阵(取景变换矩阵, View Matrix)的计算 12.2.2 绕任意轴的旋转 12.2.3 俯仰、偏航和滚动 12.2.4 行走、扫视和升降 12.3 例程:Camera 12.4 小结 第13章 地形绘制基础 13.1 高度图 13.1.1 创建高度图 13.1.2 加载RAW文件 13.1.3 访问和修改高度图 13.2 创建地形几何信息 13.2.1 顶点的计算 13.2.2 索引的计算 13.3 纹理映射 13.4 光照 13.4.1 概述 13.4.2 坐标方格的明暗度计算 13.4.3 对地形进行着色 13.5 在地形中“行走” 13.6 例程:Terrain 13.7 一些改进 13.8 小结 第14章 粒子系统 14.1 粒子和点精灵 14.1.1 结构格式 14.1.2 点精灵的绘制状态 14.1.3 粒子及其属性 14.2 粒子系统的组成 14.2.1 绘制一个粒子系统 14.2.2 随机性 14.3 具体的粒子系统 14.3.1 例程:Snow System 14.3.2 例程:Firework 14.3.3 例程:Particle Gun 14.4 小结 第15章 拾取 15.1 屏幕到投影窗口的变换 15.2 拾取射线的计算 15.3 对射线进行变换 15.4 射线/物体相交判定 15.5 例程:Picking 15.6 小结

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值