トップページ > 記事閲覧
DirectX11の自作シェーダーの定数
名前:ちーず 日時: 2017/03/04 15:39

DirectX11用の自作シェーダーの定数を設定する関数はないのでしょうか? (DirectX9用にはSetVSConstFといったシェーダー定数設定の関数がありますが、  DirectX11にはない?) DirectX 11 は DirectX 9 とは定数バッファの構造が変わったので DXライブラリは対応してないということですか?
メンテ

Page: 1 |

Re: DirectX11の自作シェーダーの定数 ( No.1 )
名前:管理人 日時:2017/03/05 21:01

仰る通り DirectX 11 は DirectX 9 とは異なり定数バッファとなったので、関数 SetVSConstF などの 関数の代わりに定数バッファ関連の以下の関数を使用する必要があります // シェーダー用定数バッファハンドルを初期化する int CreateShaderConstantBuffer( int BufferSize ) ; // シェーダー用定数バッファハンドルを削除する int DeleteShaderConstantBuffer( int SConstBufHandle ) ; // シェーダー用定数バッファハンドルの定数バッファのアドレスを取得する void *GetBufferShaderConstantBuffer( int SConstBufHandle ) ; // シェーダー用定数バッファハンドルの定数バッファへの変更を適用する int UpdateShaderConstantBuffer( int SConstBufHandle ) ; // シェーダー用定数バッファハンドルの定数バッファを指定のシェーダーの指定のスロットにセットする // TargetShader に指定できる値は DX_SHADERTYPE_VERTEX 又は DX_SHADERTYPE_PIXEL です int SetShaderConstantBuffer( int SConstBufHandle, int TargetShader /* DX_SHADERTYPE_VERTEX など */ , int Slot ) ; 流れとしては 1. シェーダーで使用する定数用の定数バッファを CreateShaderConstantBuffer で作成 〜〜メインループ〜〜 2. 必要に応じて定数バッファの中身を GetBufferShaderConstantBuffer と UpdateShaderConstantBuffer を使用して更新 3. シェーダーを使った描画の前に SetShaderConstantBuffer を使用して定数バッファレジスタに定数バッファをセット 〜〜〜〜〜〜〜〜〜〜 4. 不要になったら DeleteShaderConstantBuffer で定数バッファを削除 となります Direct3D 11 でオリジナルシェーダーを使用して画像を描画するサンプルを作成してみましたので、 よろしければコードをご覧になってみてください m(_ _)m http://dxlib.o.oo7.jp/temp/ShaderSampleD3D11.zip
メンテ
Re: DirectX11の自作シェーダーの定数 ( No.2 )
名前:ちーず(解決) 日時:2017/03/05 21:35

ありがとうございます。 これで悩みが解決できそうです。 サンプルまでつけて頂いて、大変に参考になります。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存