SDL_GPURenderPass * SDL_BeginGPURenderPass(SDL_GPUCommandBuffer *command_buffer, const SDL_GPUColorTargetInfo *color_target_infos, Uint32 num_color_targets, const SDL_GPUDepthStencilTargetInfo *depth_stencil_target_info);
| SDL_GPUCommandBuffer * | command_buffer | コマンドバッファ |
| const SDL_GPUColorTargetInfo * | color_target_infos | テクスチャサブリソースと, それと一致する消去の値とロード/ストア操作の配列 |
| Uint32 | num_color_targets | color_target_infos配列のカラーターゲットの数 |
| const SDL_GPUDepthStencilTargetInfo * | depth_stencil_target_info | テクスチャサブリソースと, それと一致する消去の値とロード/ストア操作. NULLも可 |
レンダーパスは, その最中でレンダリングされるテクスチャサブリソース(または3Dテクスチャの場合は深度スライス)と, それに対応する消去の値とロード/ストア時の操作のセットで構成されている. グラフィックパイプラインと関連付けられた全ての操作は, レンダーパス内に置かれる必要がある. この関数が呼ばれたとき, 自動的にデフォルトのビューポートとシザーの状態が設定される. このレンダーパスが終了するまで, 別のレンダーパスの開始, コンピュートパスの開始, パスのコピーを行うことはできない.
テクスチャサブリソースに内容が書き込まれる前にSDL_GPU_LOADOP_LOADを使用した場合, 結果は未定義となる. SDL_GPU_LOADOP_CLEARはレンダリングの前に単一の値をテクスチャサブリソースの内容に書き込む. これはSDL_GPU_STOREOP_STOREを使用した空のレンダーパスでテクスチャを消去する場合に良いが, 一般的には独立した操作で消去するのではなく, 何かを行うレンダーパスの最初に行うことを考えた方がよい.
D3D12でdebug_modeが有効な場合, カラーテクスチャまたは深度/ステンシルテクスチャをクリアすると, 実行時に次の様なCLEARRENDERTARGETVIEW_MISMATCHINGCLEARVALUEまたはCLEARDEPTHSTENCILVIEW_MISMATCHINGCLEARVALUEの警告が発生する場合がある:
D3D12 WARNING: ... The clear values do not match those passed to resource creation. The clear operation is typically slower as a result; but will still clear to the desired value.
この警告はテクスチャを生成するとき次のプロパティをSDL_GPUTextureCreateInfoのpropsにレンダーパスでクリアするカラー/深度/ステンシルの値と同じ値を設定すると避けることができる.
カラーテクスチャの場合:
SDL_PROP_GPU_TEXTURE_CREATE_D3D12_CLEAR_R_FLOAT: 消去で使用する色の赤成分
SDL_PROP_GPU_TEXTURE_CREATE_D3D12_CLEAR_G_FLOAT: 消去で使用する色の緑成分
SDL_PROP_GPU_TEXTURE_CREATE_D3D12_CLEAR_B_FLOAT: 消去で使用する色の青成分
SDL_PROP_GPU_TEXTURE_CREATE_D3D12_CLEAR_A_FLOAT: 消去で使用する色のα値
SDL_PROP_GPU_TEXTURE_CREATE_D3D12_CLEAR_DEPTH_FLOAT: 消去で使用する深度の値
SDL_PROP_GPU_TEXTURE_CREATE_D3D12_CLEAR_STENCIL_UINT8: 消去で使用するステンシルの値