IDirect3DDevice9::CreateTexture 方法 (d3d9.h)
创建纹理资源。
语法
HRESULT CreateTexture(
[in] UINT Width,
[in] UINT Height,
[in] UINT Levels,
[in] DWORD Usage,
[in] D3DFORMAT Format,
[in] D3DPOOL Pool,
[out, retval] IDirect3DTexture9 **ppTexture,
[in] HANDLE *pSharedHandle
);
参数
[in] Width
类型: UINT
纹理的顶层宽度(以像素为单位)。 后续级别的像素维度将是上一个级别的像素维度的一半的截断值, (独立) 。 每个维度的固定大小为 1 个像素。 因此,如果除以 2 的结果为 0,则将改用 1。
[in] Height
类型: UINT
纹理的顶层高度(以像素为单位)。 后续级别的像素维度将是上一个级别的像素维度的一半的截断值, (独立) 。 每个维度的固定大小为 1 个像素。 因此,如果除以 2 的结果为 0,则将改用 1。
[in] Levels
类型: UINT
纹理中的级别数。 如果为零,Direct3D 将为支持错误纹理的硬件生成 1 x 1 像素的所有纹理子级别。 调用 IDirect3DBaseTexture9::GetLevelCount 以查看生成的级别数。
[in] Usage
类型: DWORD
使用情况可以为 0,这表示没有使用值。 但是,如果需要使用,请使用一个或多个 D3DUSAGE 常量的组合。 最好将 usage 参数与 IDirect3D9::CreateDevice 中的行为标志匹配。
[in] Format
类型: D3DFORMAT
D3DFORMAT 枚举类型的成员,描述纹理中所有级别的格式。
[in] Pool
类型: D3DPOOL
D3DPOOL 枚举类型的成员,描述应放置纹理的内存类。
[out, retval] ppTexture
类型: IDirect3DTexture9**
指向 IDirect3DTexture9 接口的指针,表示创建的纹理资源。
[in] pSharedHandle
类型: 句柄*
保留。 将此参数设置为 NULL。 此参数可用于 Direct3D 9 for Windows Vista 共享资源。
返回值
类型: HRESULT
如果方法成功,则返回值D3D_OK。 如果方法失败,则返回值可以是以下值之一:D3DERR_INVALIDCALL、D3DERR_OUTOFVIDEOMEMORY E_OUTOFMEMORY。
备注
应用程序可以通过使用 D3DUSAGE_AUTOGENMIPMAP 调用 IDirect3D9::CheckDeviceFormat,发现对特定格式的 Mipmaps (Direct3D 9) 自动生成的支持。 如果 IDirect3D9::CheckDeviceFormat 返回D3DOK_NOAUTOGEN, IDirect3DDevice9::CreateTexture 将成功,但它将返回一级纹理。
在 Windows Vista 中,CreateTexture 可以从系统内存指针创建纹理,使应用程序能够更灵活地使用、分配和删除系统内存。 例如,应用程序可以传递 GDI 系统内存位图指针,并获取其周围的 Direct3D 纹理接口。 将系统内存指针与 CreateTexture 结合使用具有以下限制。
- 纹理的间距必须等于宽度乘以每个像素的字节数。
- 仅支持具有单个 mipmap 级别的纹理。 Levels 参数必须为 1。
- 池 参数必须 D3DPOOL_SYSTEMMEM。
- pSharedHandle 参数必须是指向可以保存系统内存点的缓冲区的有效指针;*pSharedHandle 必须是指向系统内存的有效指针,大小(以纹理宽度 * 纹理高度 * 每像素纹理格式的字节为单位)。
要求
目标平台 | Windows |
标头 | d3d9.h (包括 D3D9.h) |
Library | D3D9.lib |
请参阅
D3DXCreateTextureFromFileInMemory
D3DXCreateTextureFromFileInMemoryEx