在下面的代码中,我得到了一些奇怪的width / height值,导致图片被拉伸,或者根本没有图片。

public void onSurfaceChanged(GL10 gl, int w, int h) {

    screenHeight = h;  // actual height in pixels
    screenWidth = w;   // actual width in pixels
    worldWidth = 20;   // width of the projection (20 units)
    worldHeight = (int) (worldWidth * (screenHeight / screenWidth));

    gl.glMatrixMode(GL10.GL_PROJECTION);
    gl.glViewport(0, 0, screenWidth, screenHeight); //new viewport
    gl.glLoadIdentity();
    GLU.gluOrtho2D(gl, 0, worldWidth, 0, worldHeight); set the 2D projection


因此,我记录了变量,这些变量来自纵向模式:

screenHeight = 455
screenWidth = 320
worldHeight = 20
worldWidth = 20


(worldWidth * (screenHeight / screenWidth)应该将worldHeight设置为20 * 455/320 = 28。

在水平模式下,worldHeight突然等于0的情况下,它变得更加陌生。

我究竟做错了什么?

最佳答案

我猜,screenHeightscreenWidth都是int吗?在这种情况下,该除法将为整数除法,结果是四舍五入/舍位的整数,因此,如果比率

worldHeight = (int) (worldWidth * ((float)screenHeight / (float)screenWidth));

10-08 03:12