【问题标题】:Preventing gaps/borders when using texture for sprite sheet使用精灵表的纹理时防止间隙/边框
【发布时间】:2011-11-13 22:11:53
【问题描述】:

我正在使用带纹理的四边形来渲染精灵表中的瓷砖网格。不幸的是,在渲染时,各个图块之间存在小间隙:

使用 GL_NEAREST 而不是 GL_LINEAR 更改纹理参数以缩放纹理可解决此问题,但会导致纹理四边形本身出现伪影。有什么方法可以防止 GL_LINEAR 使用指定 UV 坐标之外的像素进行插值?有关如何解决此问题的任何其他建议?

作为参考,这是我正在使用的精灵表:

【问题讨论】:

    标签: android opengl-es textures


    【解决方案1】:

    您的纹理贴图似乎存在精度问题,您使用的是浮点数(32 位)还是更小的东西?以及如何计算坐标?

    在纹理之间留一个 1 像素的边框有时会有所帮助(有时您总是会遇到舍入错误)。

    我自己使用这个程序http://www.texturepacker.com/(不以任何方式附属),您可以从中获取纹理贴图和 UV 坐标,您还可以在纹理周围指定填充,它还可以在您的周围挤出最后一种颜色纹理,所以即使得到奇怪的圆角问题,你也总能得到完美的接缝。

    不过,我会先检查您的精度和计算结果。

    【讨论】:

    • 我正在使用浮点数,并通过简单地将 x 和 y 整数平铺坐标除以 8.0f 来计算 uv 坐标。 u=tile_x/8.0f; u+1=(tile_x+1)/8.0f;。我很确定这是纹理过滤的问题,它在指定内部平铺时无法正确钳制纹理。为每个图块添加边框似乎是目前唯一合理的方法,尽管这很奇怪,因为我没有在其他程序的精灵表中看到这样做。
    • 我在答案中写的那个程序有这两个选项来纠正这些问题,所以它必须在某些情况下发生,但我也从未发生过。
    猜你喜欢
    • 2012-02-10
    • 1970-01-01
    • 2016-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    相关资源
    最近更新 更多