使用SpriteKit包装重复纹理

时间:2018-07-15 17:19:25

标签: ios swift sprite-kit shader metal

我正在尝试在Swift中使用SpriteKit在SKShapeNode笔划上包装重复纹理。如果不添加着色器,效果很好。但是,如果添加着色器,纹理将停止重复。

splineShapeNode = SKShapeNode(splinePoints: &points, count: points.count)
splineShapeNode?.strokeTexture = SKTexture(imageNamed: "arrows_trail")
splineShapeNode?.lineWidth = 20.0

let shader = SKShader(fileNamed:SHADER)
shader.addUniform(SKUniform(name:UNIFORM, float:delta))
splineShapeNode?.strokeShader = shader

一个着色器,用于爬行x坐标

void main() {
    vec2 coord_crawling = vec2(v_tex_coord.x - u_delta, v_tex_coord.y); //crawl the coord
    vec4 pixel_new = texture2D(u_texture, coord_crawling); //grab new pixel at crawl coords    
    gl_FragColor = pixel_new;
}

这似乎不是Metal而不是OpenGL的问题,因为它可以在iOS设备模拟器(OpenGL)上正常工作,但不适用于macOS目标或iOS设备目标(都是Metal)。如果我在plist中设置了PrefersOpenGL标志,它也可以正常工作。这只是金属的特性吗?

0 个答案:

没有答案