我遇到以下情况:
在我的游戏中,我正在IOS或Android设备上的openGL ES 1.2上的纹理Atlas渲染一个tilemap。
纹理图集在每个子纹理之间具有2个像素的填充。填充颜色为黑色,颜色鲜艳。
我的目标是尽可能多地支持不同的屏幕重建。如果我的游戏不支持未缩放的屏幕分辨率,我想使用缩放作为后备策略来支持任何屏幕重制。
瓦片图看起来很完美,只要我渲染未缩放(模型矩阵中的比例= 1.0)。我也可以滚动tilemap超级平滑而没有任何故障。
一旦我渲染了tilemap,当tilemap滚动时,tile之间会出现黑色条纹(黑色清晰颜色用作纹理图集中子纹理之间的填充颜色)。
似乎由于某种原因,在缩放渲染时会以某种方式超出为我的子纹理指定的纹理坐标,并且部分使用填充颜色。
我试图找到一种可能的策略来避免这个问题。到目前为止,我已经想到了两种解决方案:
1)改变纹理坐标。向x和y添加半个像素,从宽度和高度中减去一个完整的像素。这可以工作,但渲染的图块不清晰。
2)仅在整数位置移动tilemap。但工作但滚动看起来很生涩。
3)修改纹理图集并复制所有边框像素,将每个子纹理在每个方向上展开1个像素。我还没试过这个,在修改纹理打包工具之前,我想问一下这是否可行。 (我想我读过一些关于这个策略的内容,但我再也找不到这篇文章了)
有没有人有这个问题的经验,可以指出我正确的方向?