我们的应用程序分配几何坐标的大 std::vector<> -
它必须是一个向量(这意味着连续),因为它最终发送到 OpenGL 以绘制模型。
Open GL 可以处理连续数据。
在某些时候分配失败,这意味着保留内存会引发 std::bad_alloc 异常。但是,此时仍有大量内存可用。
问题是无法分配连续块。
所以第一个两个问题是:
有没有办法控制 CRT 分配内存的方式?或者一种对其进行碎片整理的方法(疯狂的想法))..
也许有一种方法可以检查运行时是否可以分配一定大小的内存块(不使用 try/catch)。
上述问题通过将这个大向量分割成几个向量并为每个向量调用一次 OpenGL 得到了部分解决。
然而,如何定义每个较小向量的大小仍然存在一个问题——如果有很多大小相当小的向量,我们几乎可以肯定适合内存,但会有很多对 OpenGL 的调用,这会减慢可视化速度。