DirectX11始めました -第3回-

今回はプログラムを修正して4角形にしたうえで、テクスチャを貼ってみます。

今回のプログラムの流れ

準備段階

第2回のものに加え、以下の準備を行います。

  1. テクスチャの準備
  2. サンプラーオブジェクトの準備

また以下の修正を行います。

  1. 頂点データの修正
    1. TEXCOORDの追加
  2. シェーダーの変更
  3. 頂点入力レイアウトを変更

メッセージループ

画面クリア処理の後、以下の設定を行います。

  1. バッファのセット
    1. 頂点バッファのセット
    2. 入力頂点の情報オブジェクトをセット
  2. シェーダーのセット
  3. テクスチャのセット
  4. サンプラーオブジェクトのセット
  5. 描画命令を発行

テクスチャの準備

今回はD3DXの関数を使って楽にテクスチャを作成します。

シェーダーから使うテクスチャは ID3D11ShaderResourceViewとして表現されます。
D3DX11には便利な関数が用意されていて、D3DX11CreateShaderResourceViewFromFile というものを使うと、ファイル名を指定するとこのID3D11ShaderResourceViewを作成してくれます。

サンプラーオブジェクトの準備

D3D11_SAMPLER_DESCの構造体に値を代入し、CreateSamperStateメソッドにてサンプラーオブジェクトを作成します。

頂点バッファの修正

このような感じで、頂点データおよび頂点バッファの作成部分を修正します。

シェーダーの修正

テクスチャを使うようにシェーダーファイルを修正します。

頂点シェーダー

ピクセルシェーダー

頂点入力レイアウトの修正

TEXCOORDのセマンティクスが追加されているので、それにあうように修正します。

描画処理

シェーダーのセットしたあたりで、テクスチャとサンプラーオブジェクトをセットします。

感想

DirectX10のサンプルを書いていたときには、テクスチャの作成がもう少し手間でした。
一旦ID3D10Texture2D作って、そこからシェーダーリソースビューを作っていました。
今回は、D3DXのAPIの中に便利なものがあったのでそれを使ってみました。1行でシェーダーリソースビューが取得できてしまうので便利です。
とはいえ、DirectX9のときには、D3DXCreateTextureFromFileが使えたので、それと同じことだったりします。

HelloDX11_3 ソースコード

シェアする

  • このエントリーをはてなブックマークに追加

フォローする