在opengles中重新构建纹理

时间:2012-11-11 16:48:44

标签: android opengl-es compatibility

我正在使用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;

使用此常量,我使用不同的屏幕大小得到相同的结果(使用之前在代码中计算的常量来重新定义所有纹理)。

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

之前有人遇到过这个问题吗?任何提示重新游戏的提示?我尝试了很多东西而且我真的被卡住了。感谢。

1 个答案:

答案 0 :(得分:0)

这听起来像是" redimensioning"纹理没有按预期工作。例如,也许您只是调整纹理的数据,但纹理本身仍然与以前相同。这将考虑边界处的黑色像素。确保您使用KTE.REDIMENSION_X / Y因子创建纹理,并确保在您对纹理进行书写时,您正在写入它们的边缘。

至于游戏的重新定位,你的意思是你渲染的屏幕尺寸?为此,它应该是对glViewport(...)的简单更改,也许是您创建的用于查看场景的透视截头或正射影像。通常在屏幕尺寸发生变化时对这两者进行更改 - 通常不需要更改纹理,除非提高分辨率(例如,对于具有2像素的iOS视网膜显示器)。

相关问题