Android OpenGL ES 2.0根据屏幕分辨率计算距离

时间:2014-02-16 07:36:30

标签: android opengl-es-2.0 screen-resolution

我正在尝试在x轴上绘制一定距离的矩形。 每个矩形的距离应为

(screen width - rectangle width)

这样一次只能在屏幕上完全显示一个矩形。如果我将第一个矩形拖到左边,那么在屏幕上不显示(或剪切)的那个矩形部分就是第二个矩形上显示的数量。

问题在于我无法弄清楚如何计算矩形宽度与屏幕宽度的比率。 我的矩形顶点是

final float[] rectangleVerticesData = {
        // X, Y, Z
        -1.0f, 2.0f, 0.0f,            
        -1.0f, -2.0f, 0.0f,            
        1.0f, 2.0f, 0.0f,            
        -1.0f, -2.0f, 0.0f,            
        1.0f, -2.0f, 0.0f,            
        1.0f, 2.0f, 0.0f
};

基于上面,我的矩形宽度为2.我使用的是宽度为1280像素的平板电脑。 使用上面的公式,我得到了

  

1280 - 2 = 1278

当我运行程序时,预期的输出不是我想要实现的。当我拖动第一个矩形时,即使第一个矩形被完全拖动到屏幕左侧,也不会显示下一个矩形。

当我尝试将距离硬编码为10时,矩形会以该距离显示。我猜1278与它们之间的距离太长了。如何根据屏幕宽度计算三角形之间的正确距离,以便屏幕上一次只能显示一个矩形? 任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:1)

在OpenGL中,屏幕被视为标准化尺寸的四边形,即,它从顶点(-1,-1)延伸到顶点(+ 1,+ 1)。给予OpenGL绘图的顶点输入不是根据屏幕像素大小来定义的,而是在内部转换以绘制到实际的屏幕大小。由于有许多设备具有不同的屏幕尺寸,因此要使GL代码在没有硬编码屏幕尺寸的情况下在所有设备上运行,这是必需的。

因此,您必须相应地扩展计算。