コードスペランカー

ゲーム開発日誌など

描画とEffect(HLSLについて)

ポリゴンなんかを描画するために使っていたBasicEffectやAlphaTestEffectが何者なのかわかったっぽいのでメモする。
あれはシェーダーを使うためのインタフェースらしい。
そのシェーダーっていうのは、GPUにこんな感じで画面に書くんだぞっていうプログラムで、HLSLっていう別の言語(Cに似てるらしい)で書くことが出来るもので、hoge.fxなんてファイルで作られているようだ。

っとまぁ、こんな感じで使っているイメージでいいらしい。

HLSLっていうのは、アセンブラなんかで書いていたGPUへの命令をCっぽくすることでプログラマにわかりやすくした言語って位置づけのようで、ここに書かれたことは比較的高速に処理されるようだ。
で、オレがやりたいことを実現するのには、XNAで用意されているBasicEffectやAlphaTestEffectでは足りないようで、自分でシェーダーを書く必要があるっぽいようだ。
やりたいことっていうのは、単純で、複数のテクスチャを重ねた状態で1つのメッシュに張りたいだけなのだが、RenderTarget2Dはどうも1フレームに1回呼ぶことを前提としてるようで、1フレームに複数回呼ぶとFPSが激減するので、この方法は却下。
テクスチャをGetDataやSetDataでちまちまやる方法も考えたが、これも遅そうなんで却下。
このあたりの処理は、専門家のGPUさんが対応すればよいと思うよってことで、これからHLSLのお勉強。

2010/12/13追記
自分でシェーダー作る必要なかったぜ!(同一メッシュへのテクスチャの重ね貼