我遇到了OpenGL集成的问题。要求是在地图上显示复杂的UI组件(由OpenGL引擎呈现)。 这个 UI组件应该在地图移动时固定到特定点。
一个直接的解决方案是通过OpenGL Engine渲染复杂的UI组件。但是布局/渲染和事件处理需要花费很多精力。
我提出的另一种方法是在OenpGL地图上放置一个叠加UI组件,并在地图平移时使其移动。如您所知,对于GLSurfaceView,渲染发生在单独的线程中,而UI组件在主UI线程中呈现。我可以使它在功能上有效。但是它总是在UI组件和地图之间稍微转换,因为它们实际上是在两个线程中运行。
你有什么想法克服这个问题吗?
我在想的两个方向是:
答案 0 :(得分:1)
1,可能不是。
对于2,你不能触摸ui-thread之外的任何ui组件。
你的问题非常像Vsync-Mouse延迟问题。至于我对它的有限知识,他们通过保留鼠标的最后N个位置并通过外推预测第N + 1个问题来解决这个问题(好吧,不是完全解决而是......)。你可以实现这样的东西。
我还建议您查看多线程渲染内容。从字面上看,这就是你想要做的事情。