【问题标题】:Creating custom shaders with SpriteKit and Swift使用 SpriteKit 和 Swift 创建自定义着色器
【发布时间】:2014-07-04 03:59:52
【问题描述】:

对于我的游戏,我正在尝试实现一个自定义着色器来创建缩放模糊效果(我在使用着色器方面还很陌生,所以如果我使用了不恰当的术语,请多多包涵)。我的项目中有 .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 制服?我完全错过了什么吗?

【问题讨论】:

    标签: swift ios8 xcode6


    【解决方案1】:

    GLKVector2 是一个联合类型,并且 Swift 不会从 Beta 2 导入这些类型。任何需要使用非导入类型的 API 本身都不会被导入。 file a bug 可能不是一个坏主意。

    现在,您需要编写自己的 C/ObjC 函数/方法来解决这个问题,这些函数/方法转发到非导入的 API,并通过桥接头从 Swift 调用这些函数/方法。

    【讨论】:

    • 该死的,我担心会是这样。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2018-08-10
    • 1970-01-01
    • 2012-09-28
    • 2012-10-12
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多