なんか出来た気がします。図らずもGLSLとほぼ同じインターフェースになったんでサンプルがシェーダ以外全く同じですよ!
でもまだコミットしてない。なんでだか忘れたけど、コミットする前に力尽きたような…。近いうちにコミットしておきます。
でCgなんだが、GLSLよりランタイムもいい感じだなぁ。
といいたい所だが、よくわからん所がいっぱいあったりする。
特に1.5で導入されたCombinedプログラムがさっぱりわからん。VertexShaderとFragmentShaderをまとめて一つのプログラムにしてBindとかできるって話なんだが。
arbvp1とarbfp1だとどうなんのかなー、と思ってやってみたらCombine自体は出来た。が、Bindしても何もおきない。プロファイルも何か変な番号、ってのはまあ理解できるか。パラメータ列挙しても空だし。
やっぱりglsl系のプロファイルだけかなー、ってんでそっちも試したんだが、やっぱり同じだなぁ…。
glslvとかglslfとか単体はどうなのよ? お、Bindで落ちた。プロファイルがダメとか。
でもMacですよ。RadeonX1600ですよ。IsSupportedでtrueが返って…ん? IsSupportedではtrueが返ってくるけど、LatestProfileではarbvp1/arbfp1しか返ってこないな。
あー、やっぱりCgは凝った機能使うなってことねー、はいはい。
そうか、その辺で困ってたからコミットしてないんだっけ。いや、違うな。ドキュメント書いてないからコミットしてないんだ。
ドキュメント書かなきゃな。
どうしてもDepthテクスチャに描画できないのは諦めたからいいんだが、今度はテクスチャのミップマップのサブレベルにどうやっても描画できない/どうやっても作れない。
RenderTargetオブジェクトは内部で自動でテクスチャを作るので、自分でテクスチャを指定はできない。
RenderTarget2Dのコンストラクタには作るテクスチャのレベル数は指定できるんだが、フラグが指定できないのでミップマップ自動生成は使えない。
で、描画時にどのレベルに描画するか指定する方法は無い。
TextureのGenerateMipMapsは今までまともに動いたためしがない。しかもXBox360では使えるって書いてあるのに使えない。
さて。RenderTargetに描画したもののミップマップを作ろうと思ったらどうしたらいいんだろう?
あー、Forumで聞こうとしたら.NET Passportのログインサーバーが返事しやがらねぇ! ふざけんな!