51 lines
1.2 KiB
Markdown
51 lines
1.2 KiB
Markdown
# D3D12Screenshot
|
|
|
|
D3D12 截图工具类,提供屏幕截图捕获功能。
|
|
|
|
## 头文件
|
|
|
|
```cpp
|
|
#include <XCEngine/RHI/D3D12/D3D12Screenshot.h>
|
|
```
|
|
|
|
## 命名空间
|
|
|
|
`XCEngine::RHI`
|
|
|
|
## 公共静态成员函数
|
|
|
|
#### `static bool Capture(ID3D12Device* device, ID3D12CommandQueue* commandQueue, ID3D12Resource* renderTarget, const char* filename, uint32_t width, uint32_t height)`
|
|
捕获渲染目标内容并保存为图片。
|
|
- `device`: D3D12 设备
|
|
- `commandQueue`: 命令队列
|
|
- `renderTarget`: 渲染目标资源
|
|
- `filename`: 输出文件名
|
|
- `width` / `height`: 截图尺寸
|
|
- 返回: 捕获是否成功
|
|
|
|
## 内部静态成员函数
|
|
|
|
#### `static bool CopyToReadbackAndSave(...)`
|
|
内部实现:复制到回读缓冲区并保存。
|
|
|
|
## 使用示例
|
|
|
|
```cpp
|
|
// Capture back buffer
|
|
D3D12Texture* backBuffer = swapChain->GetBackBuffer(
|
|
swapChain->GetCurrentBackBufferIndex());
|
|
|
|
D3D12Screenshot::Capture(
|
|
device->GetDevice(),
|
|
cmdQueue->GetCommandQueue(),
|
|
backBuffer->GetResource(),
|
|
"screenshot.png",
|
|
1920, 1080);
|
|
```
|
|
|
|
## 备注
|
|
|
|
- 截图自动复制到 READBACK 堆然后保存
|
|
- 支持 PNG 等常见图片格式
|
|
- 可能在内部创建临时资源
|