0

在低内存条件下,我在 glReadPixels() 上遇到了来自 OpenGL 的“内存不足”错误。我正在为具有针对这种情况的强大堆机制的程序编写插件,但我不知道是否可以或如何使 OpenGL 将其用于应用程序内存管理。通过这个[尽管过时的]线程在Mac OS [不是X]下的类似问题上引起了我甚至可能的想法:http: //lists.apple.com/archives/Mac-opengl/2001/Sep/ msg00042.html

我使用的是 Windows XP,并且已经在多个 NVidia 卡上看到过它。我也对我可能能够转发给用户的任何解决方法感兴趣(线程提到“增加虚拟内存”)。

谢谢,肖恩

4

2 回答 2

1

我很确定 glReadPixels 不会引发内存不足错误实际上 glReadPixels 本身不会分配内存)。

该错误可能是由分配缓冲区对象或纹理的其他例程引发的。一旦检测到内存不足错误,您应该释放所有非强制缓冲区对象(纹理、纹理 mipmap、很少使用的缓冲区对象),以便分配一个新的缓冲区对象来保存 glReadPixels 返回的数据。

于 2010-03-15T06:38:08.127 回答
0

没有更多的细节,很难说。最终,OpenGL 将在需要分配时与本机操作系统对话。因此,如果不出意外,您始终可以为您的进程替换(或挂钩)默认 CRT/堆分配器,并让它从插件主机中的“更强大”的堆管理器中获取块。

于 2010-03-14T18:49:30.037 回答