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 回答