没有合适的资源?快使用搜索试试~ 我知道了~
6.7渲染状态1
需积分: 0 0 下载量 43 浏览量
2022-08-08
20:31:51
上传
评论
收藏 19KB DOCX 举报
温馨提示
试读
2页
2.ID3D11BlendState:该接口表示用于配置混合操作的状态组 3.ID3D11DepthStencilState:该接口表示用于配置深度测试和模板测
资源详情
资源评论
资源推荐
1 / 2
6.7 渲染状态
从本质上讲,Direct3D 是一个状态机(state machine)。在我们改变它的状态之前,驻留
在状态机内的当前状态是不会改变的。例如,我们在 6.1 节、6.2 节和 6.3 节中看到,当顶点
缓冲和索引缓冲绑定到管线的输入装配阶段时,如果我们不绑定其他缓冲,那么它们就会一
直驻留在那里;同样,在没有改变图元拓扑之前,当前的图元拓扑设置会一直有效。另外,
Direct3D 将配置信息封装在状态组中,我们可以使用如下 3 种状态组配置 Direct3D:
1.ID3D11RasterizerState:该接口表示用于配置管线光栅化阶段的状态组。
2.ID3D11BlendState:该接口表示用于配置混合操作的状态组。我们将在有关混合的
章节讨论这些状态;默认情况下,混合处于禁用状态,所以我们可以先不考虑这方面的问题。
3.ID3D11DepthStencilState:该接口表示用于配置深度测试和模板测试的状态组。我
们将在有关模板缓冲的章节讨论这些状态;默认情况下,模板是禁用的,所以我们可以先不
考虑这方面的问题。而默认的深度测试是我们在 4.1.5 节描述的标准深度测试。
目前,我们唯一需要关心的状态块接口是 ID3D11RasterizerState。我们可以通过填充
一个 D3D11_RASTERIZER_DESC 结构体并调用如下方法来创建 ID3D11RasterizerState
对象:
HRESULT ID3D11Device::CreateRasterizerState(
const D3D11_RASTERIZER_DESC *pRasterizerDesc,
ID3D11RasterizerState **ppRasterizerState);
第 1 个参数是一个指向 D3D11_RASTERIZER_DESC 结构体的指针,该结构体用于描
述所要创建的光栅化状态块;第二个参数用于返回创建后的 ID3D11RasterizerState 对象。
D3D11_RASTERIZER_DESC 结构体的定义如下:
typedef struct D3D11_RASTERIZER_DESC{
D3D11_FILL_MODE FillMode; // Default:D3D11_FILL_SOLID
D3D11_CULL_MODE CullMode; // Default:D3D11_CULL_BACK
BOOL FrontCounterClockwise; // Default:false
INT DepthBias; // Default:0
FLOAT DepthBiasClamp; // Default:0.0f
FLOAT SlopeScaledDepthBias; // Default:0.0f
BOOL DepthClipEnable; // Default:true
BOOL ScissorEnable; // Default:false
BOOL MultisampleEnable; // Default:false
BOOL AntialiasedLineEnable; // Default:false
} D3D11_RASTERIZER_DESC;
这里面的大部分成员是高级选项或者不常用的选项;因此,我们在这里只讲解前 3 个成
员的含义,其他成员的详情请参见 SDK 文档。
1.FillMode:当指定为 D3D11_FILL_WIREFRAME 时,表示以线框模式渲染几何体;
当指定为 D3D11_FILL_SOLID 时,表示以实心模式渲染几何体,这是默认值。
2.CullMode:当指定为 D3D11_CULL_NONE 时,表示禁用背面消隐功能;当指定为
D3D11_CULL_FRONT 时,表示消隐朝前的三角形;当指定为 D3D11_CULL_BACK 时,
表示消隐朝后的三角形,这是默认值。
申增浩
- 粉丝: 20
- 资源: 297
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0