我正在尝试在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标志,它也可以正常工作。这只是金属的特性吗?