1

私の実際のコードをナビゲートする手間を省くために、私は問題を最も単純な形に縮小しようとしました。HLSL が提供するドット関数を使用しているときに、期待した結果を生成できません。私が含めている例では、2 つのベクトルの内積が 26 になると予想します。このコードを実行すると、常に 45 が返されます。この関数をピクセル シェーダー内に配置し、シェーダー モデル 2 を使用してコンパイルしています。助けてください! !!

float MyDotProblemSimplified() {

float3 vectorOne = (1.0, 2.0, 3.0);
float3 vectorTwo = (3.0, 4.0, 5.0);
float dotResult = dot(vectorOne, vectorTwo); 
//Expected dotResult: 26
//Actual dotResult 45 
return dotResult;

}

4

2 に答える 2

3

以下は別のフォーラムからのものです。

問題は、float3 を定義する方法です。

交換

float3 vectorOne = (1.0, 2.0, 3.0);
float3 vectorTwo = (3.0, 4.0, 5.0);

float3 vectorOne = {1.0, 2.0, 3.0};
float3 vectorTwo = {3.0, 4.0, 5.0};

() 表記が何をするのか正確にはわかりませんが、3 つの最後の値に評価されるようです (その値がベクトルのすべてのコンポーネントに割り当てられます)。

于 2013-02-14T20:50:09.487 に答える