ユーザ用ツール

サイト用ツール


d3d:d3d12:texture

文書の過去の版を表示しています。


Texture の転送

Texture の転送

Buffer, Texture の転送もアプリケーション側で管理する必要があります。

GPU 側の VRAM を直接 Map することはできません。 一旦 Map 可能な Buffer (D3D12_HEAP_TYPE_UPLOAD) に書き込み、GPU の Copy 命令で転送を行います。

  1. Texture 用の Resource 作成 (D3D12_HEAP_TYPE_DEFAULT, D3D12_RESOURCE_STATE_COPY_DEST)
  2. 転送用 Buffer の Resource を作成 (D3D12_HEAP_TYPE_UPLOAD, D3D12_RESOURCE_STATE_GENERIC_READ)
  3. レイアウト取得 ( GetCopyableFootprints() )
  4. レイアウトに従い、転送するピクセルデータを Buffer に書き込む
  5. 転送用 CommandList を作成
  6. CommandList に CopyTextureRegion() 等の転送コマンドを格納
  7. 転送に使う CommandList/Queue が描画用と共用なら ResourceBarrier が必要。D3D12_RESOURCE_STATE_COPY_DEST → D3D12_RESOURCE_STATE_GENERIC_READ
  8. 転送用の CommandQueue で CommandList を実行
  9. CommandQueue に転送完了 Fence (Sginal) を挿入
  10. Fence で転送完了を確認。完了後は Upload 用の Buffer と CommandList を Release できる。
d3d/d3d12/texture.1442745478.txt.gz · 最終更新: 2015/09/20 19:37 by oga

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki