Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android OpenGL动态调整浮动缓冲区大小?_Android_Opengl Es_Bytebuffer_Floatbuffer - Fatal编程技术网

Android OpenGL动态调整浮动缓冲区大小?

Android OpenGL动态调整浮动缓冲区大小?,android,opengl-es,bytebuffer,floatbuffer,Android,Opengl Es,Bytebuffer,Floatbuffer,我正在尝试在Android上构建OpenGL ES 2.0渲染系统。 我有一个FloatBuffer,我把所有顶点数据放在其中。目前,我只是用大量字节分配它,并忽略draw调用(如果它们会在该大小上过量填充缓冲区)。 有没有办法动态调整缓冲区的大小?如果我只是在每次渲染后释放缓冲区并重新分配它,我想这会非常慢。我实际上仍在学习高性能OpenGL渲染,但切换到顶点缓冲区对象通常允许最高可能的执行时间。最后,你必须尝试并测试它 以下是进一步阅读的一些资料来源: 当没有太多的数据要传输时,这很好,但

我正在尝试在Android上构建OpenGL ES 2.0渲染系统。 我有一个FloatBuffer,我把所有顶点数据放在其中。目前,我只是用大量字节分配它,并忽略draw调用(如果它们会在该大小上过量填充缓冲区)。
有没有办法动态调整缓冲区的大小?如果我只是在每次渲染后释放缓冲区并重新分配它,我想这会非常慢。

我实际上仍在学习高性能OpenGL渲染,但切换到顶点缓冲区对象通常允许最高可能的执行时间。最后,你必须尝试并测试它

以下是进一步阅读的一些资料来源:

当没有太多的数据要传输时,这很好,但是作为我们的 随着对象和三角形的增多,场景变得更加复杂,这可能会 增加CPU和内存使用的额外成本。我们能做些什么呢 这我们可以使用顶点缓冲区对象。而不是转移顶点 来自客户端内存的信息每帧,该信息将 传输一次,然后将从此图形进行渲染 内存缓存


实际上,我还在学习高性能OpenGL渲染,但切换到顶点缓冲区对象通常会允许最高可能的执行时间。最后,你必须尝试并测试它

以下是进一步阅读的一些资料来源:

当没有太多的数据要传输时,这很好,但是作为我们的 随着对象和三角形的增多,场景变得更加复杂,这可能会 增加CPU和内存使用的额外成本。我们能做些什么呢 这我们可以使用顶点缓冲区对象。而不是转移顶点 来自客户端内存的信息每帧,该信息将 传输一次,然后将从此图形进行渲染 内存缓存

有没有办法动态调整缓冲区的大小

不,你目前的方法看起来不错。您可能想要扩展它,如果数据不适合当前缓冲区,您可以创建一个新的、更大的缓冲区,并用新数据填充它

不幸的是,OpenGL ES没有允许在缓冲区对象之间复制数据的功能。使用它,您可以在完全保留在GPU内存中的BOs之间创建一个副本,这样您就只需要更新丢失的部分

如果我只是在每次渲染后释放缓冲区并重新分配它,我想这会非常慢

这肯定不会提高性能,没错。这取决于您的实际实现,它可能会对性能产生巨大影响,没错。所以我建议不要这样做

有没有办法动态调整缓冲区的大小

不,你目前的方法看起来不错。您可能想要扩展它,如果数据不适合当前缓冲区,您可以创建一个新的、更大的缓冲区,并用新数据填充它

不幸的是,OpenGL ES没有允许在缓冲区对象之间复制数据的功能。使用它,您可以在完全保留在GPU内存中的BOs之间创建一个副本,这样您就只需要更新丢失的部分

如果我只是在每次渲染后释放缓冲区并重新分配它,我想这会非常慢


这肯定不会提高性能,没错。这取决于您的实际实现,它可能会对性能产生巨大影响,没错。因此,我建议不要这样做。

感谢您提供的链接,但它们对解决我的问题没有多大帮助:/谢谢你的链接,但它们对解决我的问题没有多大帮助/