CR的代码文本

all for learning about the world
  订阅 订阅  :: 管理

D3D10中的Resource 01

Posted on 2012-06-14 22:17  mumuliang  阅读(474)  评论(0编辑  收藏  举报

Resource即完成绘制需要的和显示内容相关的数据。顶点坐标,法线,颜色,贴图坐标,纹理坐标和纹理数据都属此列。

1. 

Resource分为两类:buffer和textures。可以简单粗暴的认为前者用于存放非像素数据,后者存放像素数据。

所有的Resource根据创建时有没有定义其数据类型又分为typed和typeless两种。

typed,即,resource的空间内的数据已经规定好是某类型,比如32位整数。

typeless,即resource空间固定,但数据类型是不一定的,由运行时决定。

2. 

buffer分为Vertex buffer,index buffer和constant buffer。

constant buffer是shader使用的。constant buffer可以是由应用程序定义,也可以由effect文件定义,应用程序使用ID3D10Effect::GetVariableByName访问,用Set*方法操作。

3.

texture分为1D,2D和3D。

与texture相关的另有 TextureArray, ArraySlice,MipSlice 和 Subresources。

4.

资源视图 resource view,主要是为了将同一资源用于不同渲染阶段stage而出现的概念。

 

--------------------------------------------------------------------------------------------- 

D3D的渲染管线分为如下阶段

 

每个阶段使用到的Resource是不一样的,D3D提供API用于绑定Resource和Stage。见表。

 

比较奇怪的是OM阶段,输出Resource里面的Buffer。完全理解不能。!!!(6/19 2012, 大概是支持矢量显示设备。)

 

Resource除了需要确定它被使用在哪个渲染阶段stage,还需要确定它将如何被使用。

以上是D3D10_USAGE的可选值。

前俩都容易理解。

Staging用于从别的Resource复制数据的Resource。此时第一个Resource是CPU不可访问的Default,第二个Resource是Staging,CPU可访问。

Immutable是不变的Resource。

下表列举了你想如何使用Resource,与此对应的恰当的Usage设置值。

 

如果不确定肿么个用法,defau也是个选择。Shader的Constant Buffer总是设置为Default的。

 

 


---------------------------------------------------------------------------------------------  

创建Buffer和Texture的方法,详见

http://msdn.microsoft.com/en-us/library/windows/desktop/bb205130(v=vs.85).aspx 
http://msdn.microsoft.com/en-us/library/windows/desktop/bb205131(v=vs.85).aspx 

 

 

 


---------------------------------------------------------------------------------------------