0

我正在尝试构建一个可扩展的程序,用户可以在其中构建自己的着色器效果。

谷歌搜索让我走到了这一步;

class Test(ShaderEffect):
    inputProperty = ShaderEffect.RegisterPixelShaderSamplerProperty("Input", type(Test()), 0)

但我仍然得到错误;

TypeError:如果没有 ShaderEffect 的 python 子类,则无法访问受保护的成员 RegisterPixelShaderSamplerProperty。

任何帮助将不胜感激。

我能找到的网上最好的资源链接在这里

4

1 回答 1

0

您将需要使用反射来访问 .NET 类的受保护成员 - 您没有可​​以直接访问此类成员的 Python 子类。

尝试这样的想法(我没有测试过):

inputPropertyType = ShaderEffect.GetType().GetMember(
    'RegisterPixelShaderSamplerProperty',
    BindingFlags.Instance | BindingFlags.NonPublic)
inputProperty = inputPropertyType.GetValue(ShaderEffect, None)
inputProperty("Input", type(Test()), 0)
于 2009-12-21T16:47:30.077 回答