[英]Segmentation fault using IDXGIAdapter
我正在閱讀相關的 Microsoft 文檔並找到了如何創建IDGI
數據結構然后使用它來讀取 memory 大小的示例,但我遇到了Segmentation fault
#include <iostream>
#include <d3d9.h>
#include <D3D9Types.h>
LPDIRECT3D9 g_pDirect3D = NULL;
LPDIRECT3DDEVICE9 g_pDirect3D_Device = NULL;
int main(void)
{
UINT x = 0; // Ordinal number that denotes the display adapter.
DWORD xWord = 0 ;
D3DADAPTER_IDENTIFIER9 pIdentifier ;
g_pDirect3D = Direct3DCreate9(D3D_SDK_VERSION);
HRESULT hResult = g_pDirect3D->GetAdapterIdentifier(x, xWord, &pIdentifier);
IDXGIDevice * pDXGIDevice;
HRESULT hr = g_pDirect3D->QueryInterface(__uuidof(IDXGIDevice), (void **)&pDXGIDevice);
IDXGIAdapter * pDXGIAdapter;
pDXGIDevice->GetAdapter(&pDXGIAdapter); // segfault at this line
return 0;
}
每件事都很完美,但是當我取消注釋return 0;
我得到錯誤
Microsoft Basic Render Driver
Segmentation fault
為什么我會收到那個錯誤
您無法使用 QueryInterface 從IDirect3D9
引用獲取IDXGIDevice
引用。
從 QueryInterface 調用返回的HRESULT
可能是0x80004002
( E_NOINTERFACE
),因此pDXGIDevice
是 null 並且以下調用會導致崩潰。 您應該始終檢查 HRESULT 值。
否則,對於新的開發,您應該忘記 DirectX9 並使用 DirectX11 或 DirectX12(這將啟用DXGI )。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.