ID3D10Texture1D::Map 方法 (d3d10.h)
获取指向子资源中包含的数据的指针,并拒绝 GPU 访问该子资源。
语法
HRESULT Map(
[in] UINT Subresource,
[in] D3D10_MAP MapType,
[in] UINT MapFlags,
[out] void **ppData
);
参数
[in] Subresource
类型: UINT
子资源的索引号。 有关更多详细信息 ,请参阅 D3D10CalcSubresource 。
[in] MapType
类型: D3D10_MAP
指定 CPU 对资源的读取和写入权限。 有关可能的值,请参阅 D3D10_MAP。
[in] MapFlags
类型: UINT
指定 CPU 在 GPU 繁忙时应执行的操作的标志。 此标志是可选的。
[out] ppData
类型: void**
指向纹理资源数据的指针。
返回值
类型: HRESULT
如果此函数成功,则返回S_OK。 有关其他限制以及任何 Map 方法可返回的错误值列表,请参阅备注。
注解
映射纹理使 CPU 能够直接访问纹理子资源中的基础数据。 要使方法成功,必须使用相应的标志创建正在映射的纹理 (D3D10_CPU_ACCESS_FLAG) ,并且其指定用法 (请参阅 D3D10_USAGE) 必须是D3D10_USAGE_DYNAMIC或D3D10_USAGE_STAGING。
Map 方法的常见失败由以下返回值指示:
有关上述返回值的详细信息,请参阅 DXGI_ERROR。
映射 具有以下限制:
- 单个子资源不能多次映射;换句话说,不要在已映射的子资源上调用 Map 。
- 在执行 ID3D10Device::D raw () 之前,必须取消映射绑定到管道的任何子资源,然后才能执行任何呈现操作(即 ID3D10Device::D raw )。
FLOAT* pTexels = (FLOAT*)pData;
for( UINT col = 0; col < width; col++ )
{
pTexels[col*4 + 0]; // Alpha
pTexels[col*4 + 1]; // Blue
pTexels[col*4 + 2]; // Green
pTexels[col*4 + 3]; // Red
}
Direct3D 9 与 Direct3D 10 之间的差异: Direct3D 10 中的映射类似于 Direct3D 9 中的资源锁。 |
要求
目标平台 | Windows |
标头 | d3d10.h |
Library | D3D10.lib |