キューブマップを使ってみます。今回は素直な実装で、キューブマップへの描画&利用についても試してみました。以降では、2Dのテクスチャ画像を6つ保持するテクスチャ配列です。方向を向いた3Dシーンが描画されています。これを環境マップとして使用して、反射先の色として取得します。これによりメタルマリオ的な描画結果を得ることができます。用いると簡単にテクスチャをロードすることができます。シリーズでもやっているように、画像データをアップロードヒープにロードして、実際のテクスチャ領域にコピーを行うコマンドを積む処理を行います。&barrier);FinishCommandList(command);キューブマップ用シェーダーリソースビューの準備キューブマップテクスチャを参照するためのシェーダーリソースビューを準備します。構造体を設定してビューを生成します。m_cubeSrv);シェーダーでキューブマップを参照キューブマップを参照するためには、シェーダーコードの中で3次元ベクトルでキューブマップをフェッチします。ここでは反射ベクトルを頂点シェーダーで計算してしまっています。系の流儀に従って、左手座標系でやってみることにしましょう。右手系の関数も用意されていて簡単に右手系も使えるのですが、キューブマップのことを考えるとシェーダーでの処理も考慮が必要になってきます。動的キューブマップ折角の映り込みを実現できるのであれば、動的に描画したいと思うのは自然な流れでしょう。これにはレンダーテクスチャとしてキューブマップを作成します。この6面に対してそれぞれ3Dのシーンを描画していけば、動的キューブマップを作ることが出来ます。そこで各面毎にレンダーターゲットビューを用意します。配列サイズの指定が意外と罠で、6面のままだとエラーが発生します。handleRTV[i]);あとは各X,Y,Z方向にカメラを向けてこれらの面を描画します。最初にトライするときには、左手座標系でやりましょう。描画して中央のティーポットに貼り付けている図がこちらです。ファイルから読み込んだテクスチャを表示してみたり、回転させてみたりしています。参照している面がわかりやすいように、各面毎にクリア色を変えています。左手座標系で動的キューブマップ右手系で同じシーンを描画してみたものがこちらとなります。注意事項が多めなので今回の説明は省略します。一応ちゃんと色々な事項を考慮して手続きを踏めば出来るよということで。上記の左手系と見比べてみてもらうと分かるのですが、Z軸の向きが違うので左右が反転しているように見えるかと思います。それでも映り込んでいる面としての参照先は、近い色のティーポットが見えていることもあり正しそうなことは分かるかと思います。素直に右手系を使うとどうなるかなお、何も考慮せずに描画するとこのような場面に出遭うでしょう、そして面の反転を直してみても、もう1枚の絵のようになったりすると思います。すると、これ以外のケースに陥るかもしれません。ポリゴン面がどちらを正とする向きと指定するか、反転はどのように対処するのかなど、方針は色々とあると思いますが、組み合わせ次第ではちょっと難しい状況に陥ると思っています。DirectXの場合は、左手系でキューブマップを貼るところからやってみましょう。まとめ今回は愚直に各面ごとを描画するための、キューブマップ用のRTVを紹介したところがポイントです。真っ先に右手系でキューブマップ参照をやると大変なので、左手系がオススメであることを示したつもりです。最近のジオメトリシェーダーと今回のキューブマップで、ピンとくる方も居ると思います。次回は、1回の描画指示でキューブマップ6面を描画するDirectX10以降でのキューブマップの書き方を紹介する計画です。使ってようやく画面のクリアだけエラーも起こらず動作させることができるようになりました。正式版ではないので、今後変更されることもあると思います。正常に動かなくなりました。使って画面のクリアまでは簡単にやれるかなと思っていたのですが、そこまでたどり着けませんでした。先日のドキュメント参照しながらやっているだけでは不十分で、ちょっと試行錯誤&ヘッダの探索なども必要でした。...DirectXD3D10_TEXTURE2D_DESCのArraySize。ソースコードを書いて試そうとした矢先に躓きました。テクスチャを作成するも失敗。前回の日記で書いた、DirectX10でテクスチャ配列を使用するサンプルができました。はまりどころはあったのですが、ようやく出来ました。注意点はその都度説明します。リリースになりました。インストール出来た方もちらほらいるようです。リリースになっていました。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。コメントデータの処理方法の詳細はこちらをご覧ください。ん日記.タイトルとURLをコピーしました。