差分

ナビゲーションに移動 検索に移動

定数バッファ

128 バイト除去, 2022年6月9日 (木) 01:41
== 概要 ==
まず前提条件として[[CPUシェーダー]]側で動く[[プログラム]]のへ渡す[[変数]]を、[[GPU定数]]側で動く)は[[プログラマブルシェーダー]]に[[定数ドローコール]]として送り込むには、* Direct3D 9ではSetVertexShaderConstant命令とSetPixelShaderConstant命令を使って1個1個送り込んでいた。* Direct3D 10からは定数バッファ(Constant Buffer、cbuffer)を使用してドスンと送信できるようになった。のたびに再設定するものであり、その変数(定数)は1回のドローコールが終わると自動的に消去される。
まず、シェーダーへ渡す変数(定数)は次に[[ドローコールCPU]]のたびに再設定するものである。変数(定数)は1回のドローコールが終わると自動消去される。側で動く[[プログラム]]の[[変数]]を[GPU]]側で動く[[プログラマブルシェーダー]]に[[定数]]として送り込むには、
このためDirect3D 9では[[定数]]を描画の直前に毎回1個1個設定していた。; Direct3D 9描画のたびにドローコールの直前に毎回SetVertexShaderConstant命令やSetPixelShaderConstant命令を使って1個1個送り込んでいた。描画のたびに[[メインメモリ]]から[[VRAM]]に小さな[[データ]]の転送を繰り返している感じである。の転送を繰り返していた。
一方、Direct3D 10も描画の直前に毎回設定するのは同じだが、定数バッファを1個設定するだけでよくなった。[[メインメモリ]]から[[; Direct3D 10定数バッファ(Constant Buffer、cbuffer)を作成してGPU(VRAM]]に「定数バッファの)に送信しておき、以後はドローコールの直前にその定数バッファの[[ポインタ]]」だけが転送される感じである。つまり定数バッファを利用することでだけを送り込むようになった。 つまり定数バッファを利用することで[[頂点バッファ]]や[[インデックスバッファ]]などと同様に再利用できるわけだ。などと同様に再利用でき、かつ毎回送信するデータもポインタひとつで済むようになった。
== 利点 ==

案内メニュー