• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 使用 SKShader 片段着色器的 SKSpriteNode 最近邻

[复制链接]
菜鸟教程小白 发表于 2022-12-11 19:00:22 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在尝试在我的 spritekit 2d 像素艺术游戏中应用调色板交换功能,似乎在应用 SKShader 时,SKSpriteNode 纹理上的过滤模式被忽略了。

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

根据在着色器玩具上找到的一些代码,我做了这个尝试,这似乎是正确的方向,如果坐标被标准化并且 (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 上工作?



Best Answer-推荐答案


不是我自己的完美答案,但我设法通过在我的 info.plist 中将 PrefersOpenGL 添加到 YES 来防止这个问题,但是我知道它是首选使用尽可能在 ios 上使用金属

关于ios - 使用 SKShader 片段着色器的 SKSpriteNode 最近邻,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46761755/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap