我在下面的代码中得到了一些奇怪的宽度/高度值,导致图片拉伸,或根本没有图片。
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。
我做错了什么?
答案 0 :(得分:4)
我猜,screenHeight
和screenWidth
都是int
?在这种情况下,除法将是整数除法,从而产生舍入/截断的整数,因此如果比率<1则为0。将除法的至少一个操作数转换为浮点数以执行实际浮点除法:
worldHeight = (int) (worldWidth * ((float)screenHeight / (float)screenWidth));
答案 1 :(得分:0)