在下面的代码中,我得到了一些奇怪的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的情况下,它变得更加陌生。
我究竟做错了什么?
最佳答案
我猜,screenHeight
和screenWidth
都是int
吗?在这种情况下,该除法将为整数除法,结果是四舍五入/舍位的整数,因此,如果比率
worldHeight = (int) (worldWidth * ((float)screenHeight / (float)screenWidth));