ฉันจะค้นหาหน่วยความจำวิดีโอที่มีอยู่โดยใช้ DirectX ได้อย่างไร


คำตอบ:


8

ตาม Game Coding Complete 3 มีหลายวิธี:

  • GetAvailableVidMem () ของ DX7 - โดยปกติแล้วจะค่อนข้างดี ใช้งานไม่ได้ดีกับการ์ดที่มีหน่วยความจำที่แชร์
  • WMI (Windows Management Interface) มีผลลัพธ์คล้ายกันกับข้างต้น
  • DxDiag ใช้ทั้งสองอย่างเพื่อให้ผลลัพธ์ที่ดีกว่า
  • D3D9 มีฟังก์ชัน GetAvailableTextureMemory () แต่สามารถใช้ได้กับ Windows Vista / 7 เท่านั้น

ค้นหาตัวอย่าง DX ในวันที่ 08 มีนาคมหรือ SDK ที่เรียกว่า 'VideoMemory'


ตัวอย่าง DX สำหรับหน่วยความจำวิดีโอยอดเยี่ยม - ควรพบว่าก่อนถาม;)
Vincent Scheib

1
เมื่อพิจารณาถึงจำนวนคอมพิวเตอร์ที่จะใช้หน่วยความจำที่ใช้ร่วมกันฉันจะไม่แนะนำรุ่นของ DX7 และรุ่น D3D9 นี้จะมีให้เฉพาะใน Vista + ได้อย่างไร d3d9 มีอยู่ใน XP ...
Bahbar

5

สำหรับ DX9EX บน Vista และใหม่กว่า:

IDXGIDevice * pDXGIDevice;
hr = g_pd3dDevice->QueryInterface(__uuidof(IDXGIDevice), (void **)&pDXGIDevice);
IDXGIAdapter * pDXGIAdapter;
pDXGIDevice->GetAdapter(&pDXGIAdapter);
DXGI_ADAPTER_DESC adapterDesc;
pDXGIAdapter->GetDesc(&adapterDesc);
return adapterDesc.DedicatedVideoMemory;

(จากhttp://msdn.microsoft.com/en-us/library/bb174526(v=VS.85).aspx )


ไม่เรียกRelease()ใช้pDXGIDeviceหลังจากการโทรสำเร็จQueryInterface()จะทำให้หน่วยความจำรั่ว
Vinz
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.