gpt4 book ai didi

swift - 使用 SpriteKit 和 Swift 创建自定义着色器

转载 作者:行者123 更新时间:2023-11-28 13:22:01 26 4
gpt4 key购买 nike

对于我的游戏,我正在尝试实现一个创建缩放模糊效果的自定义着色器(我在使用着色器方面还很陌生,所以如果我使用不当的术语,请多多包涵)。我的项目中有 .fsh 着色器文件,我正在尝试使用 SKShader 应用它。

我用这个创建着色器:

let testShader = SKShader(fileNamed: "ZoomBlur.fsh");

我的着色器将两个 uniform 作为输入,blurCenter (vec2) 和 blurSize (float),所以我尝试将它们添加到我的着色器中:

testShader.addUniform(SKUniform(name: "blurSize", float: 50);

尝试添加 blurCenter 时,似乎没有 vec2 的初始值设定项,只有 float 和纹理。看着 class reference ,看起来我应该可以使用这个:

testShader.addUniform(SKUniform(name: "blurCenter", floatVector2: ...);

...但是 Xcode 抛出这个错误:

Incorrect argument label in call (have 'name:floatVector2:', expected 'name:float:')

如何添加 vec2 制服?我是否完全遗漏了什么?

最佳答案

GLKVector2 是联合类型,从 Beta 2 开始,Swift 不会导入它们。任何需要使用非导入类型的 API 本身都不会导入。 file a bug 可能不是个坏主意.

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

关于swift - 使用 SpriteKit 和 Swift 创建自定义着色器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24560710/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com