なぜか shader (4.0) の tbuffer がうまく動きません。
これはかなり はまり ました。
Texture など他に ShaderResource を使わない状態での
tbuffer または Buffer 宣言で、
最初のベクトルしか読み出せない症状が発生します。
例えば
tbuffer ColorData
{
float4 color0;
float4 color1;
float4 color2;
};
と宣言し、
color0 = { 1, 0, 0, 1 } (赤)
color1 = { 1, 1, 0, 1 } (黄色)
color2 = { 0, 1, 0, 1 } (緑)
のようにパラメータを設定したとします。
VS または PS で color1 を読み出してもなぜか color0 の値「赤」が
表示されてしまいます。
これは ShaderResource にして
Buffer
のように宣言して Load を使っても同じでした。
使い方の問題だと思っておかしいおかしいと散々悩むこと丸一日。
ふと Reference Driver で試すとちゃんと黄色になるではありませんか。
もしやと思って、RADEON HD 2900XT で走らせるとこちらも「黄色」!!
これは参りました。
ちなみにそれまで使っていたのは
GeForce8800GTS + ForceWare 158.24
(2007/07/22 現在の公式最新版) です。
たまたま BETA 版ドライバが 2007/07/11 に出ていたので
BETA 版 ForceWare 163.11
に入れ替えたら、、きちんと黄色です!
以前 88 の BETA 版ドライバで懲りていたので、
入れ替えを控えていたのですよ。
Reference での実験も忘れないようにします。