gpt4 book ai didi

ios - iOS 8 中的 SKShader,swift 中没有 GLVector?

转载 作者:行者123 更新时间:2023-11-29 10:36:22 25 4
gpt4 key购买 nike

尝试翻译时 this在 Swift 中,我发现我的代码无法编译

let movementShader = SKShader(fileNamed: "reflection.fsh")
movementShader.addUniform(SKUniform(name: "size", SCNVector3: SCNVector3Make(0.0, 0.0, 0.0)))

说我在通话中有一个额外的参数。

这里很新,有什么想法吗?

谢谢

最佳答案

这是一个示例实现。在 SKShader 上创建一个 Objective-C 类别,我称之为 Union。在 .h 文件中声明一个方法:

#import <SpriteKit/SpriteKit.h>

@interface SKShader (Unions)

+(SKShader*)shaderForX:(float)x y:(float)y z:(float)z;
@end

然后进入.m文件并实现:

#import "SKShader+Unions.h"

@implementation SKShader (Unions)

+(SKShader*)shaderForX:(float)x y:(float)y z:(float)z
{
SKShader *shader = [SKShader shaderWithFileNamed:@"shader.fsh"];
SKUniform *texture = [SKUniform uniformWithName:@"customTexture" texture:[SKTexture textureWithImageNamed:@"shade"]];
SKUniform *uniformSCNVector = [SKUniform uniformWithName:@"size" floatVector3:GLKVector3Make(x, y, z)];

[shader setUniforms:@[texture,uniformSCNVector]];
return shader;
}
@end

不要忘记为您的项目创建一个桥接头。这是一个名为 "YourProjectName-Bridging-Header.h" 的 .h 文件,包含 #import "SKShader-Unions.h" 指令。

现在你可以从 Swift 文件调用:

let shader = SKShader(forX: x, y: y, z: y)

关于ios - iOS 8 中的 SKShader,swift 中没有 GLVector?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26829724/

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