OpenGL - 多个设备上的相同尺寸

时间:2011-07-28 18:36:06

标签: android opengl-es

我希望我的方块适合屏幕的宽度。 我已经设法在我的设备上执行此操作,如下所示:

@Override
public void onDrawFrame(GL10 gl) {
    // Clears the screen and depth buffer.
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
    gl.glClearColor(1f, 1f, 1f, 1f);
    // Replace the current matrix with the identity matrix
    gl.glLoadIdentity();

    gl.glTranslatef(0f, 0f, -1.6f);

    new Plane(1f,1f).draw(gl);
}

所以我的飞机宽1f,高1f。通过将部件移动到屏幕1.6f中,正方形整齐地适合屏幕的宽度。但在其他设备上,方块变得太大而部分落在屏幕之外。

如何将方块的宽度调整到屏幕宽度?

1 个答案:

答案 0 :(得分:0)

我刚刚开始使用android和openGL,所以可能会有一些我不知道的辅助类。

问题是IMO的宽高比(aspectRatio = screenWidth / screenHeight)。这会因设备而异,从而导致飞机离开屏幕的问题。您应该根据宽高比缩放所有内容,或者制作一些窗口,该窗口始终在屏幕的整个宽度上,但高度会有所不同(根据您希望的宽高比调整高度)。

如果你使用身份投影和相机,我认为你留在NDC空间(或类似的东西),所以如果你在这个空间中渲染四边形,边缘在-1或+1,你应该填满整个屏幕四边形。