Problem beim Initialisieren von DirectX 11
-
Moin
Ich habe nach diesem Tutorial( http://rastertek.com/tertut01.html )versucht ein 3D Terrain zu erstellen.
Leider bekomme ich an dieser Stelle die Fehlermeldung ausgegeben:result = m_Direct3D->Initialize(screenWidth, screenHeight, VSYNC_ENABLED, hwnd, FULL_SCREEN, SCREEN_DEPTH, SCREEN_NEAR); if(!result) { MessageBox(hwnd, L"Could not initialize DirectX 11.", L"Error", MB_OK); return false; }
Da mein Pc nur DirectX 10 hat, habe ich die featureLevel entsprechend geändert:
D3D_FEATURE_LEVEL featureLevel[] = { D3D_FEATURE_LEVEL_11_0, D3D_FEATURE_LEVEL_10_1, D3D_FEATURE_LEVEL_10_0 };
Das Programm spuckt aber immer noch die gleiche Fehlermeldung aus...
-
Was mir gerade auf den ersten Blick auffällt:
Benutz lieberif(FAILED(result))
statt
if(!result)
Ich weiß es leider nicht im Kopf, aber möglicherweise löst das das Problem.
-
Danke
Nur jetzt bekomme ich an dieser Stelle einen Fehler:result = device->CreateBuffer(&vertexBufferDesc, &vertexData, &m_vertexBuffer); if(FAILED(result)) { return false; }
Fehlermeldung:
Unbehandelte Ausnahme bei 0x0029306c in Game_DirectX10.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00000000.
device und m_vertexBuffer = 0x00000000
-
Wenn device == NULL is, dann verweist der Zeiger ins Leere und du kannst keine Funktion aufrufen von einem Objekt, das nicht existiert.
Also musst du das Device erstmal erzeugen: http://msdn.microsoft.com/en-us/library/windows/desktop/bb205086(v=vs.85).aspx
-
Habe ich:
result = D3D11CreateDeviceAndSwapChain(NULL, D3D_DRIVER_TYPE_HARDWARE, NULL, 0, featureLevel, 1, D3D11_SDK_VERSION, &swapChainDesc, &m_swapChain, &m_device, NULL, &m_deviceContext); if(FAILED(result)) { return false; }
-
Alle DX-Methoden liefern ja nicht nur stumpf true oder false zurück, sondern (so weit ich mich erinnere) oft weitere Informationen.
Zum Beispiel hier http://msdn.microsoft.com/en-us/library/windows/desktop/bb205278(v=vs.85).aspx oder hier http://msdn.microsoft.com/en-us/library/windows/desktop/bb205278(v=vs.85).aspx
Geh doch mal Deine DX-Methoden durch und checke die Werte, eventuell findest Du so einen weiteren Hinweis.
Spass haben