1

C#を使用してHLSLシェーダーエフェクトpでタイプのパラメーターを設定するにはどうすればよいのでしょうか。float2e

e.Parameters["p.x"].SetValue(1); 
e.Parameters["p.y"].SetValue(2); 

動作しないようです。

4

2 に答える 2

5
e.Parameters["p"].SetValue(new Vector2(1, 2));
于 2013-01-21T19:03:48.820 に答える
1

構造体タイプを公開するプロパティを使用するときに、一方が他方を更新せずに一部を更新する場合は、次のようなパターンを使用する必要があります。

var temp = thing.SomeProperty;
temp.X = 1;
thing.SomeProperty = temp;

特定のケースでは、問題の構造体のすべてのコンポーネントを書き直したいようです。その場合は、新しい構造体インスタンスを作成して保存するだけです。最初に古いものを読む理由はありません。一部の人々はフォーマットを好むかもしれませんが

var temp = thing.SomeProperty;
temp.X = new Vector2(1, temp.Y);
thing.SomeProperty = temp;

特に、すべてのフィールド値の指定を必要としないコンストラクターのオーバーロードが存在する場合は、どのフィールドが変更されているか、または変更されていないかを判断するのが難しくなるため、あまり好きではありません。

于 2013-01-21T19:14:43.373 に答える