在 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.
我可以在 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.