对于我的游戏,我正在尝试实现一个创建缩放模糊效果的自定义着色器(我在使用着色器方面很新,所以如果我使用不正确的术语,请耐心等待)。我的项目中有.fsh着色器文件,我尝试使用SKShader应用它。
我用这个创建着色器:
let testShader = SKShader(fileNamed: "ZoomBlur.fsh");
我的着色器需要两个制服作为输入,blurCenter(vec2)和blurSize(float),所以我尝试将它们添加到我的着色器中:
testShader.addUniform(SKUniform(name: "blurSize", float: 50);
当尝试添加blurCenter时,似乎不是vec2的初始化器,只是浮动和纹理。看class reference,看起来我应该可以使用它:
testShader.addUniform(SKUniform(name: "blurCenter", floatVector2: ...);
...但是Xcode抛出了这个错误:
Incorrect argument label in call (have 'name:floatVector2:', expected 'name:float:')
如何添加vec2制服?我完全错过了什么吗?
答案 0 :(得分:2)
GLKVector2
是一种联合类型,Swift不会导入Beta 2中的任何类型。任何需要使用非导入类型的API本身都不会导入。 file a bug可能不是一个坏主意。
现在,您需要通过编写自己的C / ObjC函数/方法来解决这个问题,这些函数/方法转发到非导入的API,并通过桥接头从Swift调用它们。