2017-10-16 221 views
1

我想在我的spritekit 2d像素艺术游戏中应用调色板交换功能,并且看起来应用SKShader时,SKSpriteNode纹理上的filteringMode被忽略。SKSpriteNode使用SKShader片段着色器的最近邻居

因此,我认为我需要先应用最近邻居着色,然后再调用调色板交换逻辑。

基于在这里发现的着色器玩具的一些代码,我做了这个尝试,这似乎是正确的方向和逻辑似乎听起来如果坐标是标准化和(0.0,0.0)是左下角和(1.0 ,1.0)右上角,但结果是出来方式太块。

https://www.shadertoy.com/view/MllSzX

我适应了shader.fsh文件:

void main() { 

    float texSize = 48.0; 
    vec2 pixel = v_tex_coord * texSize; 
    float c_onePixel = 1.0/texSize; 
    pixel = (floor(pixel)/texSize); 
    gl_FragColor = texture2D(u_texture, pixel + vec2(c_onePixel/2.0)); 
} 

我怎样才能获得最近的邻居对我的工作SKShader之前我移动到我的调色板交换?

回答

0

不是一个完美的答案,我自己,但我设法在我的info.plist中添加PrefersOpenGLYES防止这个问题,但是我明白,最好是在可能的情况iOS上

使用金属