【发布时间】:2014-07-31 04:46:42
【问题描述】:
我的着色器完美呈现在 .sks 文件中。问题是将其添加到 SKSpriteNode 或任何其他支持的节点以在实际游戏场景中显示它。这是我在场景初始化程序中的代码:
let shaderSprite = SKSpriteNode(texture: nil, color: nil, size: CGSizeMake(100, 100))
shaderSprite.shader = SKShader(fileNamed: "Player.fsh")
shaderSprite.position = CGPointMake(200, 200)
shaderSprite.zPosition = 1000
addChild(shaderSprite)
精灵根本不显示,虽然我没有任何具有更高 zPosition 的节点。 在 sprite kit 游戏中使用自定义着色器的最佳做法是什么?
编辑:
我尝试了三种不同的着色器。例如,来自 WWDC 2014 “what's new in sk”会议的那个:
void main(void)
{
float currTime = u_time;
vec2 uv = v_tex_coord;
vec2 circleCenter = vec2(0.5, 0.5);
vec3 circleColor = vec3(0.8, 0.5, 0.7);
vec3 posColor = vec3(uv, 0.5+0.5 * sin(currTime)) * circleColor;
float illu = pow(1. - distance(uv, circleCenter), 4.) * 1.2;
illu *= (2. + abs(0.4 + cos(currTime * -20. + 50. * distance(uv, circleCenter))/1.5));
gl_FragColor = vec4(posColor * illu * 2., illu * 2.);
}
【问题讨论】:
-
发布你的着色器代码
-
完成,但我认为这更像是 SKSpiteNode 或 SKScene 问题,而不是着色器的问题
-
非常感谢任何指向 iOS8 中 SKShader 使用示例的链接
-
尝试使用实际上具有纹理或颜色的精灵,我敢打赌,当您不使用自定义着色器时,精灵甚至不会出现
-
谢谢,LearnCocos2D。事实上,当我传递一个随机纹理而不是 nil 时,它确实出现了,甚至着色器也变得活跃
标签: ios opengl-es sprite-kit shader