我现在正在使用SKAction旋转SKCamera,实习生旋转场景。这非常重要,因为重力和所有节点(除了摄像机子节点)也会旋转。现在我有一个应用于场景的色差着色器,每次旋转场景时,场景的背景颜色都会立即覆盖整个屏幕。无论使用哪种着色器都会发生这种情我甚至做了一个着色器,只是给出了确切的纹理,它仍然发生。另外只是设置相机zRotation并不能解决这个问题,所以SKAction不是造成这个问题的原因。这是着色器:
void main( void )
{
float divider = 200;
float deltaX = sin(v_tex_coord.y * 3.14 * 10 + u_time * 4) * 0.01;
vec2 rCoord = v_tex_coord;
rCoord.x = rCoord.x - sin(u_time * 10) / divider + deltaX;
rCoord.y = rCoord.y - sin(u_time * 10) / divider;
vec2 gCoord = v_tex_coord;
gCoord.x = gCoord.x + sin(u_time * 10) / divider + deltaX;
gCoord.y = gCoord.y + sin(u_time * 10) / divider;
vec2 bCoord = v_tex_coord;
bCoord.x = bCoord.x + deltaX;
vec4 rChannel = texture2D(u_texture, rCoord);
vec4 gChannel = texture2D(u_texture, gCoord);
vec4 bChannel = texture2D(u_texture, bCoord);
gl_FragColor = vec4(rChannel.r, gChannel.g, bChannel.b, 1.0);;
}
这也是初始化着色器的代码:
let shader = SKShader(fileNamed: "ChromaShader.fsh")
self.shader = shader
shouldEnableEffects = true
提前致谢!