我目前正在Android平台上设计一个简单的opengl es 1.1动画,其中特定对象的网格三角形在碰撞事件期间向不同方向爆炸。由于所有的三角形都需要它们自己的独特变换,因为它们彼此爆炸,我得出了相对不知情的结论,我有两种选择之一:
a)使用固定的顶点缓冲区数据,并在渲染周期中更改每个三角形的opengl变换矩阵。虽然这消除了通过CPU手动转换顶点数据的需要,但它需要在每个帧中使用许多显式的'gl‘转换/绘制命令。
b)使用两个动态生成的顶点缓冲区,并在生成当前帧的同时使用额外的线程来计算下一组顶点。虽然额外的线程能够与渲染线程上发生的GPU/消隐等待事件并行执行其任务,但所有转换都必须通过Java代码执行,因为opengl转换仅适用于渲染周期。
正如我所说的,这是一个相对不知情的结论,所以我将非常感谢任何关于这个计划的实施的建议。
发布于 2011-08-15 18:53:42
为每个三角形设置一个转换矩阵将会非常慢,所以你的b计划听起来要好得多。另一种选择是移动到GLES 2.0,并尝试在顶点着色器中计算新的顶点位置。
https://stackoverflow.com/questions/7059544
复制相似问题