如何设置 float2 类型的 HLSL 参数

本文关键字:类型 HLSL 参数 float2 何设置 设置 | 更新日期: 2023-09-27 17:55:17

我想知道如何使用 C# 在 HLSL 着色器效果中设置类型 float2 p 类型的参数e

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

似乎不起作用。

如何设置 float2 类型的 HLSL 参数

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;

我不太喜欢它,因为它使判断哪些字段正在修改或未被修改变得更加困难,特别是如果存在任何不需要指定所有字段值的构造函数重载。