DirectX11 テクスチャ3Dポリゴン描画

テクスチャ使用の準備ができたので、テクスチャを貼ったポリゴンを表示してみる。
さらに、シェーダに行列パラメータを渡して3次元に。

テクスチャ3Dポリゴン描画
テクスチャ3Dポリゴン描画
2Dポリゴン描画にテクスチャ画像読み込みとシェーダへのパラメータ(行列、テクスチャなど)を渡す処理を追加。テクスチャ処理にはDirectXTexを利用。シェーダのパラメータ取得方法が少し変わっていたが、サンプルやドキュメントなどを参考にしてシェーダプログラムを作成。
定数レジスタが定数バッファに変わっただけかと思ってましたが、更新頻度などでグループ化(最大16)できるので、効率の良いプログラムが作れそう。

テクスチャ画像の読み込み

LoadFromWICFileで画像ファイルを読み込みDirectX(GPU)が処理できる画像データに変換し、CreateShaderResourceViewでシェーダリソースを作成、シェーダへ。PNG,JPGなどのフォーマットはLoadFromWICFile、DDSファイルはLoadFromDDSFile。DDSファイルは、GPUが直接利用できるデータフォーマット(圧縮フォーマットあり)のため画像データ変換が不要⇒速度&メモリ効率が良い。

シェーダへのパラメータ受け渡し

行列などの数値パラメータは、頂点データなどと同じID3D11Bufferを作成してシェーダへ。その際、0~15までの番号(第1引数)でグループ化ができる。更新頻度や種類などで分類可能。テクスチャはシェーダリソースとしてシェーダへ、テクスチャのフィルタやラップモードなどは、別にID3D11SamplerStateというものを作成して渡す。シェーダでは、列優先行列なので転置してバッファに格納することに注意。

シェーダ側は、register(xxx)でVSSetConstantBuffersなどの第一引数の数値と対応させ、パラメータを受け取る。テクスチャはregister( t0 )、サンプラーはregister( s0 )、定数バッファはregister( b0 )。

サンプルダウンロード DirectX11 テクスチャ3Dポリゴン描画

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

認証:数字を入力してください(必須) * Time limit is exhausted. Please reload CAPTCHA.