我试图在android上构建一个opengl es 2.0渲染系统。
我有一个floatbuffer,我把所有的顶点数据都放在其中。目前,我只是用大量字节来分配它,如果draw调用会以那样的大小填满缓冲区,则忽略它们。
有没有动态调整缓冲区大小的方法?如果我只是释放缓冲区,并在每次渲染后重新分配它,我想这将是非常缓慢的。

最佳答案

有没有动态调整缓冲区大小的方法?
不,你现在的方法看起来不错。您可能需要扩展它,如果数据不适合当前缓冲区,您可以创建一个新的、更大的缓冲区并用新数据填充它。
不幸的是opengl es没有函数as OpenGL-3 does允许您在缓冲区对象之间复制数据。使用它,您可以在完全保留在gpu内存中的bos之间创建一个副本,这样您就只需要更新丢失的部分。
如果我只是释放缓冲区,并在每次渲染后重新分配它,我想这将是非常缓慢的。
这肯定不会提高性能,没错。根据您的实际实现,它可能会对性能产生巨大影响,没错。所以我建议不要这样做。

关于android - Android OpenGL动态调整FloatBuffer的大小?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17476571/

10-12 00:19
查看更多