OpenGL(ES) - 当新对象添加到ArrayList时,多边形会暂时消失

时间:2011-05-01 01:48:01

标签: java android graphics opengl-es arraylist

在OpenGL ES 1.x Android应用程序中,我生成一个圆圈(来自三角形),然后将其翻译大约一百次以形成一个级别。一切都有效,除非发生某个事件导致大约15个物体立即被添加到存储圆圈坐标的arraylist。当此事件快速发生2次以上时,列表中的所有圆圈都会消失大约1/5秒。除此之外,圆圈也能够流畅地生动。

该程序使用相同的同步技术作为java SE应用程序运行良好,我尝试了六种左右的其他同步技术无济于事,所以我觉得问题是openGL实现。有什么建议吗?

2 个答案:

答案 0 :(得分:3)

您真的必须将顶点数据存储在客户端内存中吗?如果你不修改它,我建议你改用VBO。只需将其上传到图形内存一次,然后从那里绘制。它会快得多(不要求你为每次抽奖发送所有顶点数据),我很确定你不会遇到你描述的问题。

转换可以根据需要进行,然后您只需为您的圆圈的每个实例提供绘图命令。

答案 1 :(得分:1)

所以这个名单正在你的鼻子下修改?听起来你需要在OpenGL线程上对这个列表进行任何修改。试试Activity.postOnUiThread(Runnable),其中Runnable实现您自己的代码。可能。