使用 SpriteKit 和 Swift 的自定义着色器有一些不同
Posted
技术标签:
【中文标题】使用 SpriteKit 和 Swift 的自定义着色器有一些不同【英文标题】:Custom shader with SpriteKit & Swift has some difference 【发布时间】:2014-07-16 05:37:34 【问题描述】:这是我的测试着色器源代码。
//Shader/TestShader.fsh
void main()
vec4 color = texture2D(u_texture, v_tex_coord).rgba;
gl_FragColor.rgb = vec3(1);
gl_FragColor.a = color.a;
非常简单。这只是为了测试。 对于使用此着色器:
//GameScene.swift
// override func didMoveToView(view: SKView)
let sprShader = SKSpriteNode(imageNamed: "Spaceship")
sprShader.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame))
sprShader.shader = SKShader(fileNamed: "Shader/TestShader.fsh")
self.addChild(sprShader)
我期待精灵的白色轮廓。但它显示白色矩形。 我是初学者。我有什么问题吗?
【问题讨论】:
【参考方案1】:回答一个非常老的问题,但你可以在着色器中添加一个 if 语句
vec4 color = texture2D(u_texture, v_tex_coord).rgba;
if(color.a > 0.1)
gl_FragColor.rgb = vec3(1);
gl_FragColor.a = color.a;
这样只有不透明的像素会被涂成白色
【讨论】:
以上是关于使用 SpriteKit 和 Swift 的自定义着色器有一些不同的主要内容,如果未能解决你的问题,请参考以下文章
使用 Swift 在 SpriteKit 中将自定义“数字”图像作为分数添加到 SKLabelNode
将 AcceptMouseMovedEvents 用于带有 Storyboard 和 Swift 的 SpriteKit 鼠标操作