在OpenGL ES 1.x Android应用程序中,我生成一个圆(从三角形),然后将其翻译大约一百次以形成一个级别。除了当某个事件发生时导致大约15个对象立即添加到存储圆的坐标的数组列表时,所有东西都可以工作。当这个事件迅速发生2次以上时,列表中的所有圆圈都消失约1/5秒。除此之外,这些圈子也可以顺利进行动画。OpenGL(ES) - 当新对象添加到ArrayList中时,多边形会暂时消失
该程序运行良好,因为使用相同的同步技术的Java SE应用程序,并且我尝试了六种左右的其他同步技术无济于事,所以我觉得问题在于openGL的实现。有什么建议么?
我在另一个有几千行代码的线程中有一个逻辑后端,并且从这里迁移这个列表很困难。至于同步:我使用同步块CopyOnWriteArrayLists在opengl函数中创建了数组的深层副本(作为缓冲区)...。没有技巧或一线修复? – 2011-05-01 02:00:31
您所要做的就是创建一个可运行的程序,传递要写入的信息,然后发布可运行程序。在你修改数组的任何地方都要这样做为它创建一个函数,甚至。这并不难,即使有后端。这听起来像是如果你从UI线程中修改GL状态,无论如何你都会受到长期的影响。 – 2011-05-01 02:54:46
事实证明,问题是getCircleSize方法返回一个整数,我需要一个浮点数。我一生中花了三个小时将int变为float。但它值得,它永远是。 – 2011-05-01 03:01:18