Android OpenGL动态调整浮动缓冲区大小?
我正在尝试在Android上构建OpenGL ES 2.0渲染系统。 我有一个FloatBuffer,我把所有顶点数据放在其中。目前,我只是用大量字节分配它,并忽略draw调用(如果它们会在该大小上过量填充缓冲区)。Android OpenGL动态调整浮动缓冲区大小?,android,opengl-es,bytebuffer,floatbuffer,Android,Opengl Es,Bytebuffer,Floatbuffer,我正在尝试在Android上构建OpenGL ES 2.0渲染系统。 我有一个FloatBuffer,我把所有顶点数据放在其中。目前,我只是用大量字节分配它,并忽略draw调用(如果它们会在该大小上过量填充缓冲区)。 有没有办法动态调整缓冲区的大小?如果我只是在每次渲染后释放缓冲区并重新分配它,我想这会非常慢。我实际上仍在学习高性能OpenGL渲染,但切换到顶点缓冲区对象通常允许最高可能的执行时间。最后,你必须尝试并测试它 以下是进一步阅读的一些资料来源: 当没有太多的数据要传输时,这很好,但
有没有办法动态调整缓冲区的大小?如果我只是在每次渲染后释放缓冲区并重新分配它,我想这会非常慢。我实际上仍在学习高性能OpenGL渲染,但切换到顶点缓冲区对象通常允许最高可能的执行时间。最后,你必须尝试并测试它 以下是进一步阅读的一些资料来源: 当没有太多的数据要传输时,这很好,但是作为我们的 随着对象和三角形的增多,场景变得更加复杂,这可能会 增加CPU和内存使用的额外成本。我们能做些什么呢 这我们可以使用顶点缓冲区对象。而不是转移顶点 来自客户端内存的信息每帧,该信息将 传输一次,然后将从此图形进行渲染 内存缓存
实际上,我还在学习高性能OpenGL渲染,但切换到顶点缓冲区对象通常会允许最高可能的执行时间。最后,你必须尝试并测试它 以下是进一步阅读的一些资料来源: 当没有太多的数据要传输时,这很好,但是作为我们的 随着对象和三角形的增多,场景变得更加复杂,这可能会 增加CPU和内存使用的额外成本。我们能做些什么呢 这我们可以使用顶点缓冲区对象。而不是转移顶点 来自客户端内存的信息每帧,该信息将 传输一次,然后将从此图形进行渲染 内存缓存 有没有办法动态调整缓冲区的大小 不,你目前的方法看起来不错。您可能想要扩展它,如果数据不适合当前缓冲区,您可以创建一个新的、更大的缓冲区,并用新数据填充它 不幸的是,OpenGL ES没有允许在缓冲区对象之间复制数据的功能。使用它,您可以在完全保留在GPU内存中的BOs之间创建一个副本,这样您就只需要更新丢失的部分 如果我只是在每次渲染后释放缓冲区并重新分配它,我想这会非常慢 这肯定不会提高性能,没错。这取决于您的实际实现,它可能会对性能产生巨大影响,没错。所以我建议不要这样做 有没有办法动态调整缓冲区的大小 不,你目前的方法看起来不错。您可能想要扩展它,如果数据不适合当前缓冲区,您可以创建一个新的、更大的缓冲区,并用新数据填充它 不幸的是,OpenGL ES没有允许在缓冲区对象之间复制数据的功能。使用它,您可以在完全保留在GPU内存中的BOs之间创建一个副本,这样您就只需要更新丢失的部分 如果我只是在每次渲染后释放缓冲区并重新分配它,我想这会非常慢
这肯定不会提高性能,没错。这取决于您的实际实现,它可能会对性能产生巨大影响,没错。因此,我建议不要这样做。感谢您提供的链接,但它们对解决我的问题没有多大帮助:/谢谢你的链接,但它们对解决我的问题没有多大帮助/