在OpenGL ES 1.x Android应用程序中,我生成一个圆圈(来自三角形),然后将其翻译大约一百次以形成一个级别。一切都有效,除非发生某个事件导致大约15个物体立即被添加到存储圆圈坐标的arraylist。当此事件快速发生2次以上时,列表中的所有圆圈都会消失大约1/5秒。除此之外,圆圈也能够流畅地生动。
该程序使用相同的同步技术作为java SE应用程序运行良好,我尝试了六种左右的其他同步技术无济于事,所以我觉得问题是openGL实现。有什么建议吗?
答案 0 :(得分:3)
您真的必须将顶点数据存储在客户端内存中吗?如果你不修改它,我建议你改用VBO。只需将其上传到图形内存一次,然后从那里绘制。它会快得多(不要求你为每次抽奖发送所有顶点数据),我很确定你不会遇到你描述的问题。
转换可以根据需要进行,然后您只需为您的圆圈的每个实例提供绘图命令。
答案 1 :(得分:1)
所以这个名单正在你的鼻子下修改?听起来你需要在OpenGL线程上对这个列表进行任何修改。试试Activity.postOnUiThread(Runnable)
,其中Runnable
实现您自己的代码。可能。