2012-11-11 105 views
0

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

我想,我的游戏可以与任何分辨率兼容,为此,我创建了游戏分辨率和屏幕分辨率,这样的关系的常数:

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; 

使用此常数,我使用不同的屏幕大小获得了相同的结果(使用之前代码中计算的常量重新绘制所有纹理的尺寸)。

问题是我想减少GAME的分辨率来使所有的纹理更大,现在我得到纹理周围的黑色像素,因为我的redimension常量是有很多小数的浮点数,我猜所有那些黑色像素是在这个计算过程中剩下的职位...

任何人都有过这个问题吗?任何提示重新调整游戏?我尝试了很多东西,而且我很困难。谢谢。

回答

0

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

至于redimensioning游戏,你的意思是你渲染的屏幕大小?为此,它应该是glViewport(...)的一个简单变更,也许是您创建的用于查看您的场景的视角(frustrum或orthos)。通常在屏幕尺寸发生变化时进行这两种更改 - 通常不需要对纹理进行更改,除了可能会提高分辨率(例如对于具有2个像素的iOS视网膜显示器)。