我想使用OpenGL作为绘图引擎来创建AR绘图应用程序。当我尝试将抽头坐标传递给OpenGL线程时,某些数据(y轴)无意间进入了屏幕中心。错误可能在哪里?
我将其用作我的应用程序的基础:https://github.com/googlecreativelab/ar-drawing-java/tree/master/app/src/main/java/com/googlecreativelab/drawar。由于项目的大小,此代码中存在错误,我无法在此处复制代码(仅主类为740行)。在DrawAR类(主类)中,onTouchEvent(第661行)注册抽头坐标,然后将其传递给更新方法(第432行),该方法在onDrawFrame GLThread方法(第532行)上被调用。首先,我认为这可能是由于onDrawFrame调用次数增加所致,然后onTouchEvent收集了敲击数据,但是触摸数据并未在任何地方擦除,因此在这种情况下,它应该对相同的数据重复执行操作。 笔划-整个图形,一点-图形中的一点。 以下是一些记录了数据更改的日志:
2019-01-29 01:47:08.382 8650-8650/com.googlecreativelab.drawar E/mytag: touch down registered: x 657.0 y 1641.0
E/mytag: stroke added
E/mytag: touch move registered: x 657.0 y 1641.0
E/mytag: point added: x 657.0 y 148.0
E/mytag: touch move registered: x 657.0 y 1641.0
E/mytag: point added: x 657.0 y 148.0
E/mytag: point added: x 657.0 y 1641.0
E/mytag: touch move registered: x 657.0 y 1641.0
E/mytag: point added: x 657.0 y 148.0
E/mytag: point added: x 657.0 y 1641.0
E/mytag: point added: x 657.0 y 148.0
E/mytag: point added: x 657.0 y 1641.0
E/mytag: point added: x 657.0 y 148.0
E/mytag: point added: x 657.0 y 1641.0
E/mytag: point added: x 657.0 y 148.0
E/mytag: touch move registered: x 657.0 y 1641.0
E/mytag: point added: x 657.0 y 148.0
E/mytag: touch move registered: x 657.0 y 1641.0
E/mytag: touch up registered: x 657.0 y 1641.0
当手指保持在一个点上时,预期结果将是x中的所有点:657.0 y:1641.0,但是第二个y坐标为148.0。轻按屏幕的不同部分:顶部标记下降到屏幕中心,底部-上升到中心,中心-闪烁值-+ 20范围。一切都只在y轴上发生。