0

我正在使用 OpenGL ES 在 Android 中开发视频游戏。我在重新调整纹理时遇到了一些问题。

我希望我的游戏可以兼容任何分辨率,为此,我创建了一个游戏分辨率和屏幕分辨率之间关系的常量,如下所示:

Display display = getWindowManager().getDefaultDisplay(); 
KTE.SCREEN_WIDTH = display.getWidth();
KTE.SCREEN_HEIGHT = display.getHeight();
KTE.REDIMENSION_X = KTE.SCREEN_WIDTH/KTE.GAME_WIDTH; 
KTE.REDIMENSION_Y = KTE.SCREEN_HEIGHT/KTE.GAME_HEIGHT;

使用这个常数,我使用不同的屏幕尺寸得到相同的结果(使用我之前在代码中计算的常数重新调整所有纹理的尺寸)。

问题是我想降低游戏分辨率以使所有纹理更大,现在我在纹理周围得到黑色像素,因为我的重新尺寸常数是带有很多小数的浮点数,我猜所有这些黑色像素都是位置在此计算过程中留下...

以前有人遇到过这个问题吗?重新调整游戏大小的任何提示?我已经尝试了很多东西,但我真的被困住了。谢谢。

4

1 回答 1

0

听起来纹理的“重新调整尺寸”没有按预期工作。例如,也许您只是调整纹理数据的大小,但纹理本身的大小仍然与以前相同。这将解释边界处的黑色像素。确保使用 KTE.REDIMENSION_X/Y 因子创建纹理,并确保在写入纹理时写入纹理的边缘。

至于重新调整游戏的尺寸,您是指渲染到的屏幕尺寸吗?为此,它应该是对 glViewport(...) 的简单更改,也许是您为查看场景而创建的透视平截头体或正交。对这两者的更改通常在屏幕尺寸更改时完成 - 通常不需要更改纹理,除非可能提高分辨率(例如对于具有 2x 像素的 iOS 视网膜显示器)。

于 2012-11-14T12:16:09.837 回答