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).aspxhttp://msdn.microsoft.com/en-us/library/windows/desktop/bb205131(v=vs.85).aspx
---------------------------------------------------------------------------------------------