菜鸟教程小白 发表于 2022-12-11 19:00:22

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


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

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

<p>根据在着色器玩具上找到的一些代码,我做了这个尝试,这似乎是正确的方向,如果坐标被标准化并且 (0.0, 0.0) 是左下角并且 (1.0, 1.0) 右上角,但结果太 block 状了。</p>

<p> <a href="https://www.shadertoy.com/view/MllSzX" rel="noreferrer noopener nofollow">https://www.shadertoy.com/view/MllSzX</a> </p>

<p>我对 <code>shader.fsh</code> 文件的改编:</p>

<pre><code>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));
}
</code></pre>

<p>在进行调色板交换之前,如何让最近的邻居在我的 SKShader 上工作?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>不是我自己的完美答案,但我设法通过在我的 info.plist 中将 <code>PrefersOpenGL</code> 添加到 <code>YES</code> 来防止这个问题,但是我知道它是首选使用尽可能在 ios 上使用金属</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 使用 SKShader 片段着色器的 SKSpriteNode 最近邻,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/46761755/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/46761755/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 使用 SKShader 片段着色器的 SKSpriteNode 最近邻