我正在尝试在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与它们之间的距离太长了。如何根据屏幕宽度计算三角形之间的正确距离,以便屏幕上一次只能显示一个矩形? 任何帮助将不胜感激。谢谢。
答案 0 :(得分:1)
在OpenGL中,屏幕被视为标准化尺寸的四边形,即,它从顶点(-1,-1)延伸到顶点(+ 1,+ 1)。给予OpenGL绘图的顶点输入不是根据屏幕像素大小来定义的,而是在内部转换以绘制到实际的屏幕大小。由于有许多设备具有不同的屏幕尺寸,因此要使GL代码在没有硬编码屏幕尺寸的情况下在所有设备上运行,这是必需的。
因此,您必须相应地扩展计算。