使用OpenFL将参数传递给着色器

时间:2018-01-02 14:03:22

标签: shader haxe openfl

我想将一组向量或一个float数组传递给OpenFL中的着色器,这可能吗?

现在我只能使用以下内容传递浮点数:

var param: ShaderParameter<Float> = new ShaderParameter<Float>();
param.value = [2.0];
this.data.some = param; // In the Shader class 

但是如果我尝试使用Array<Float>而不是Float进行编译,则会将值加载到着色器中。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

我认为你不应该以这种方式将数组传递给着色器。 您是否尝试过直接通过shader.data.param.value设置值?

答案 1 :(得分:0)

这个答案可能为时已晚,但是您是否尝试过在Shader的构造函数的super()调用之前设置ShaderParameter?在扩展Shader类(例如DisplayObjectShader),在内部的super()之前设置想要的参数,然后在super()调用之后进行其他正常操作(例如将任何值分配给参数的“值”字段)。对我来说,潜在的问题似乎与时序有关,因为如果在执行我的Shader的父构造函数之后分配参数,它们将无法工作。