C#を使用してHLSLシェーダーエフェクトp
でタイプのパラメーターを設定するにはどうすればよいのでしょうか。float2
e
e.Parameters["p.x"].SetValue(1);
e.Parameters["p.y"].SetValue(2);
動作しないようです。
e.Parameters["p"].SetValue(new Vector2(1, 2));
構造体タイプを公開するプロパティを使用するときに、一方が他方を更新せずに一部を更新する場合は、次のようなパターンを使用する必要があります。
var temp = thing.SomeProperty;
temp.X = 1;
thing.SomeProperty = temp;
特定のケースでは、問題の構造体のすべてのコンポーネントを書き直したいようです。その場合は、新しい構造体インスタンスを作成して保存するだけです。最初に古いものを読む理由はありません。一部の人々はフォーマットを好むかもしれませんが
var temp = thing.SomeProperty;
temp.X = new Vector2(1, temp.Y);
thing.SomeProperty = temp;
特に、すべてのフィールド値の指定を必要としないコンストラクターのオーバーロードが存在する場合は、どのフィールドが変更されているか、または変更されていないかを判断するのが難しくなるため、あまり好きではありません。