Opengl es 最大缓冲区大小Opengl ES 2.0

Opengl es 最大缓冲区大小Opengl ES 2.0,opengl-es,opengl-es-2.0,Opengl Es,Opengl Es 2.0,我知道之前已经讨论过这一点,但我仍然没有找到与2014年相关的合理答案。 OpenGL ES 2.0中是否有顶点缓冲区对象的最大大小? 我正在写一个运行在Android上的图形引擎 我正在使用gldrawarrays()使用GL\u LINE\u STRIP绘制一组线。 所以,我没有使用任何索引数组,所以我没有被索引缓冲区对象中出现的短整数的最大值所限制 我想加载超过200万个X,Y,Z浮点值,以便将大约24mb的数据加载到GPU 我离极限是远还是短?是否有办法对此进行查询?就API而言,GLs

我知道之前已经讨论过这一点,但我仍然没有找到与2014年相关的合理答案。 OpenGL ES 2.0中是否有顶点缓冲区对象的最大大小? 我正在写一个运行在Android上的图形引擎

我正在使用gldrawarrays()使用GL\u LINE\u STRIP绘制一组线。 所以,我没有使用任何索引数组,所以我没有被索引缓冲区对象中出现的短整数的最大值所限制

我想加载超过200万个X,Y,Z浮点值,以便将大约24mb的数据加载到GPU

我离极限是远还是短?是否有办法对此进行查询?

就API而言,
GLsizeiptr
的大小是上限。 一般来说,这意味着4 GiB(32位指针是最常见的情况);当然,目前还没有一款集成设备拥有如此多的GPU内存,这是您可以处理的最大地址。因此,它是您可以使用
glBufferData(…)
等函数分配的最大字节数

考虑<代码> GLBuffelDATA</代码>的原型: 现在让我们看看
GLsizeiptr
的定义: -基本总账操作-p。12


OpenGL或OpenGL ES没有定义操作限制。可移植的最佳方法是调用具有特定大小的
glBufferData(…)
,并NULL调用
数据
指针,查看它是否引发
GL\u内存溢出
错误。这大致相当于“代理纹理”(proxy texture),其目的是在尝试上载纹理之前检查是否有足够的内存来匹配具有特定尺寸的纹理。这是一种非常粗糙的解决问题的方法,但它在德国劳埃德船级社已经存在了很长时间。

我认为最大大小是您可以在VRAM中保存多少数据。好了,图书馆没有定义数字上限。谢谢你的信息!令人惊讶的是,目前还没有一种真正可靠、便携的方法可以做到这一点。这就是我想采取的方法。如果您已经有一个glbuffer和一个数据存储。重新初始化并加载不同大小的新数据的最佳方法是什么?@Fra:在同一缓冲区上再次调用
glBufferData(…)
将“孤立”原始分配的内存并分配新内存。这是一种奇特的说法,GL将为您分配新内存,一旦旧内存不再被任何东西使用(例如,尚未完成的绘图命令),它将释放旧内存。好的,因此需要调用delete。只需以不同的大小再次上传数据。谢谢
void glBufferData (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage);