我想知道如何使用 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;
我不太喜欢它,因为它使判断哪些字段被修改或未被修改变得更加困难,特别是如果存在任何不需要指定所有字段值的构造函数重载。