2015-09-20 38 views
2

我必須在這裏錯過簡單的東西......我希望。iOS 9 Sprite Kit自定義着色器似乎被忽略

我在使用Xcode 7和iOS 9 SDK製作自定義着色器時遇到了麻煩。與精靈套件模板開始我改變了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中工作,但我也沒有發現其他人抱怨自定義着色器不工作,所以我有點失落。

另一個需要注意的是,控制檯上沒有關於着色器的信息。例如,如果我有意在我的片段着色器中創建一個錯誤,我希望在控制檯中有日誌消息,但沒有。這幾乎就像自定義着色器被忽略了一樣。當然,我設置該值時驗證了着色器對象的存在;所以它正在讀着色器文件,但似乎從未編譯它。

回答

0

我想出了我的問題......要獲得OpenGL相關的調試信息,您必須在實際設備上運行。在模擬器中我根本沒有任何信息。但是,只要我在設備上運行,它就開始噴射大量有助於追蹤問題的數據。

那麼上面的代碼有什麼問題?我忘了';'在着色器中。我很快就責怪這個;)

順便說一句,當着色器是正確的,它也可以在模擬器中工作。