Graphics 什么';这是D3DERR_out of videomemory和E_out of memory之间的区别

Graphics 什么';这是D3DERR_out of videomemory和E_out of memory之间的区别,graphics,visual-c++,directx,Graphics,Visual C++,Directx,我正在用XP-32中的DX9开发一个绘制图元的工具 创建顶点缓冲区和索引缓冲区时,可能会出现创建失败的错误 返回代码可以是D3DERR\u out of videomemory或E\u out of memory 我不知道他们有什么不同 我在DX示例中使用VideoMemory工具检查内存,它报告1024MB 这是否意味着如果我创建一组超过1024MB的托管资源,它将报告D3DERR_OUTOFVIDEOMEMORY 如果进程中没有更多可用的虚拟空间内存,并且malloc失败,DX9将报告E_O

我正在用XP-32中的DX9开发一个绘制图元的工具

创建顶点缓冲区和索引缓冲区时,可能会出现创建失败的错误

返回代码可以是D3DERR\u out of videomemory或E\u out of memory

我不知道他们有什么不同

我在DX示例中使用VideoMemory工具检查内存,它报告1024MB

这是否意味着如果我创建一组超过1024MB的托管资源,它将报告D3DERR_OUTOFVIDEOMEMORY


如果进程中没有更多可用的虚拟空间内存,并且malloc失败,DX9将报告E_OUTOFMEMORY?

D3DERR_OUTOFVIDEOMEMORY是directx内存错误…不一定与视频内存有关,它可能占用内存来保存场景或绘制图像,正如您已经发现的,如果没有足够的内存用于您的进程,您将从内存中获取E_。后者是指分配给进程的内存正在耗尽。你们并没有说你们有什么操作系统/硬件规格,最好的办法是在资源不足的情况下考虑升级系统内存

编辑:有些笔记本电脑/上网本有一个图形适配器,它“配备了系统内存”,好吧,这些图形卡对于“超越使命召唤”和其他高端游戏来说并不重要……图形卡实际上从主板上窃取了一些内存,从而增加了图形控制器可用的RAM量。如果你在做文字处理/发电子邮件等工作,它们是很好的…但是以系统ram为代价,控制器占用了系统ram,这是一个“集成图形控制器”

希望这有帮助, 致以最良好的祝愿,
Tom.

E\u OUTOFMEMORY意味着DirectX无法分配(即通过malloc或new)您请求的内存块

D3DERR_OUTOFVIDEOMEMORY意味着DirectX无法分配(即从内存池中,gfx卡上或主内存中保留)您请求的内存块


警告:司机可能会撒谎。

谢谢。我的系统是XP 32位和D3D9。从D3D视频内存示例中,它显示hMonitor设备名称:\\。\DISPLAY1 GetVideoMemoryGiadDirectDraw DWAvailableVideM:627 MB(658096128)GetVideoMemoryGiadXDIAG n/a GetVideoMemoryGiaWMI dwAdapterRAM:640 MB(671088640)GetVideoMemoryGiadxGi n/a GetVideoMemoryGiad3d9 DWAvailableText:1109 MB(1162870784)当我在1109 MB附近创建顶点/索引缓冲区时,D3D将返回E_OUTOFMEMORY错误。但总的进程内存使用率只有1.3GB,并不高。当我试图在进程已经使用了1.7GB的关键内存环境下锁定现有的d3d缓冲区对象以读取其内容时,有时锁会失败并报告E_OUTOFMEMORY。似乎在很多情况下都可能发生E_OUTOFMEMORY。我很困惑。