0

我有以下情况:

在我的游戏中,我在 IOS 或 Android 设备上的 openGL ES 1.2 上从纹理 Atlas 渲染瓷砖贴图。

纹理图集在每个子纹理之间有 2 个像素的填充。填充颜​​色为黑色,颜色清晰。

我的目标是支持尽可能多的不同屏幕分辨率。如果我的游戏不支持未缩放的屏幕分辨率,我想使用缩放作为后备策略来支持任何屏幕分辨率。

只要我渲染未缩放(模型矩阵中的比例 = 1.0),瓷砖贴图看起来很完美。我还可以超级平滑地滚动瓷砖地图而不会出现任何故障。

一旦我渲染了缩放的瓷砖贴图,当瓷砖贴图滚动时,瓷砖之间就会出现黑色条纹(黑色清晰的颜色用作纹理图集中子纹理之间的填充颜色)。

似乎由于某种原因,在缩放渲染和填充颜色被部分使用时,为我的子纹理指定的纹理坐标不知何故被超出了。

我试图找到一种可能的策略来避免这个问题。到目前为止,我想到了 2 个解决方案:

1)改变纹理坐标。将半个像素添加到 x 和 y,从宽度和高度中减去一个完整的像素。这可行,但渲染的瓷砖不清晰。

2) 仅在整数位置上移动 tilemap。有效,但滚动看起来很生涩。

3) 修改纹理图集并复制所有边界像素,将每个子纹理在每个方向上扩展 1 个像素。我还没有尝试过,在我修改我的纹理打包工具之前,我想问问这是否可行。(我想我读过一些关于这个策略的文章,但我再也找不到这篇文章了)

有没有人有这个问题的经验,并且可以指出我正确的方向?

4

0 回答 0