【问题标题】:iOS 9 Sprite Kit Custom Shader seems to be ignorediOS 9 Sprite Kit 自定义着色器似乎被忽略了
【发布时间】:2015-12-16 22:48:58
【问题描述】:

我一定是遗漏了一些简单的东西......我希望。

我无法让自定义着色器与 Xcode 7 和 iOS 9 SDK 一起使用。从 sprite kit 模板开始,我将 GameScene 更改为如下所示:

class GameScene: SKScene {

    var backgroundShader = SKShader(fileNamed: "BackgroundShader")

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder) is not used in this app")
    }

    override init(size: CGSize) {
        super.init(size: size)

        anchorPoint = CGPoint(x: 0.5, y: 0.5)

        let background = SKSpriteNode(color: SKColor.brownColor(), size: size)
        background.shader = backgroundShader
        addChild(background)

    }
}

我的“BackgroundShader”看起来像这样:

void main()
{
    gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0)
}

所以,我希望我的背景应该是绿色,而不是棕色。我也尝试过为 SKSpriteNode 使用纹理,但这没有帮助。

我几乎肯定这在 iOS 8 中有效,但我也没有发现其他人抱怨自定义着色器不起作用,所以我有点迷茫。

另一个注意事项是控制台没有打印关于着色器的任何内容。例如,如果我故意在片段着色器中创建错误,我希望控制台中有日志消息,但没有。就好像自定义着色器被忽略了一样。当然,我在设置值时验证了着色器对象存在;所以它正在读取着色器文件,但似乎从未编译它。

【问题讨论】:

    标签: ios sprite-kit ios9


    【解决方案1】:

    我发现了我的问题...要获得与 OpenGL 相关的调试信息,您必须在实际设备上运行。在模拟器中,我根本没有得到任何信息。然而,当我在一台设备上运行时,它开始喷涌出大量有助于追踪问题的数据。

    那么上面的代码有什么问题呢?我忘了一个';'在着色器中。我把这件事归咎于 swift ;)

    顺便说一句,当着色器正确时,它也可以在模拟器中工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-28
      • 2016-09-30
      • 2012-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多