51 lines
1.3 KiB
Markdown
51 lines
1.3 KiB
Markdown
|
|
# D3D12Texture::InitializeFromExisting
|
|||
|
|
|
|||
|
|
## 函数签名
|
|||
|
|
|
|||
|
|
```cpp
|
|||
|
|
bool InitializeFromExisting(ID3D12Resource* resource);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 中文描述
|
|||
|
|
|
|||
|
|
从已存在的 D3D12 纹理资源初始化纹理包装类,不分配新资源。此方法用于包装外部创建的纹理资源,例如从文件系统加载的纹理或与其他 API 共享的资源。
|
|||
|
|
|
|||
|
|
## 参数
|
|||
|
|
|
|||
|
|
| 参数 | 类型 | 描述 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| `resource` | `ID3D12Resource*` | 已存在的 D3D12 纹理资源指针,不能为 nullptr |
|
|||
|
|
|
|||
|
|
## 返回值
|
|||
|
|
|
|||
|
|
`bool` - 初始化是否成功。如果 `resource` 为 nullptr,返回 false。
|
|||
|
|
|
|||
|
|
## 线程安全
|
|||
|
|
|
|||
|
|
非线程安全,请确保在单线程环境中调用。
|
|||
|
|
|
|||
|
|
## 复杂度
|
|||
|
|
|
|||
|
|
O(1)
|
|||
|
|
|
|||
|
|
## 示例
|
|||
|
|
|
|||
|
|
```cpp
|
|||
|
|
ComPtr<ID3D12Resource> externalResource;
|
|||
|
|
// 外部创建或获取的 D3D12 资源
|
|||
|
|
device->CreateReservedResource(&desc, initialState, nullptr, IID_PPV_ARGS(&externalResource));
|
|||
|
|
|
|||
|
|
D3D12Texture texture;
|
|||
|
|
if (texture.InitializeFromExisting(externalResource.Get())) {
|
|||
|
|
// 成功包装外部资源
|
|||
|
|
// 注意:外部资源的管理责任保持不变
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 相关文档
|
|||
|
|
|
|||
|
|
- [D3D12Texture](texture.md) - 类总览
|
|||
|
|
- [Initialize](initialize.md) - 创建新纹理
|
|||
|
|
- [InitializeFromData](initialize-from-data.md) - 从数据初始化
|
|||
|
|
- [InitializeDepthStencil](initialize-depth-stencil.md) - 初始化深度模板纹理
|