作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试在我的 spritekit 2d 像素艺术游戏中应用调色板交换功能,但似乎在应用 SKShader 时忽略了 SKSpriteNode 纹理上的 filteringMode。
因此,我认为我需要先应用最近邻着色,然后再执行调色板交换逻辑。
根据在着色器玩具上找到的一些代码,我做了这个尝试,这似乎是正确的方向,如果坐标被归一化并且 (0.0, 0.0) 是左下角并且 (1.0, 1.0) 右上角,但结果太 block 状了。
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 上工作?
最佳答案
对我自己来说不是一个完美的答案,但我设法通过在我的 info.plist 中将 PrefersOpenGL
添加到 YES
来防止这个问题,但是我知道最好使用在 iOS 上尽可能使用 Metal
关于ios - SKSpriteNode 最近邻使用 SKShader 片段着色器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46761755/
我是一名优秀的程序员,十分优秀!