在 Android OpenGL 渲染器中使用触摸坐标

Using Touch Coordinates in Android OpenGL Renderer

我可以在 android opengl 中绘制矩形或正方形,方法是提及顶点的浮点值,如 0.1f、1.2f 等...

 private float vertices[] = {

       -1.0f, 0.8f,  0.0f,        // V1 - bottom left

       -1.0f, 1.0f,  0.0f,        // V2 - top left

        1.0f, 0.8f,  0.0f,        // V3 - bottom right

        1.0f, 1.0f,  0.0f         // V4 - top right

};

但我想在用户触摸的地方绘制形状(矩形)... 例如,如果用户触摸 (x,y) =(200px,300px).

我想在那里画一个小矩形...但是当我将这些值传递到顶点时,矩形会超出我的屏幕....

任何人都可以帮助我了解如何完成此操作。

谢谢。

您的触摸坐标来自 屏幕坐标 ,它们是基于像素的,而在您当前的情况下,您正在渲染通常称为 标准化设备坐标的内容,它允许您在 X 和 Y 坐标中从 [-1,1] 绘制。

您缺少的是使这两个空间协同工作的转换。对于您的场景,最简单的解决方案可能是在屏幕坐标中呈现。基本上,获取每个触摸坐标并将其映射到 [-1,1] 范围内。像下面这样的东西应该可以工作:

x_drawing_coordinate = 2.0 * x_touch_coordinate / screen_width - 1.0

并对 y 坐标执行相同的操作,除了使用 screen_height.