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) - 初始化深度模板纹理
|