C++ Directx Programm ausführen Error : Failed creating Direct3D Device

TheKnigge

Cadet 1st Year
Registriert
März 2013
Beiträge
9
Zuallererst mein System :
AMD Radeon HD 7850
AMD A8 3820 LLano CPU(Radeon HD 6550D deaktiviert)
8,00GB Ram


Hallo Leute. Hoffentlich könnt ihr mir bei meinem Problem helfen, da ich im Internet nach 3 Tagen verzweifelter Suche nichts Geeignetes gefunden habe.

Ich wollte eigentlich anfangen Directx1 Programmierung zu lernen mit dem Buch"Spieleprogrammierung mit Directx11 und C++" von Susanne Wiegard. Also habe ich das Directx11 Sdk (June2010) heruntergeladen und installiert. Allerdings gab es da schon das erste Problem weil ich beim Installieren einen Fehler erhalten habe. Diesen konnte ich aber beheben indem ich die Microsoft Visual C++ 2010 Redistributables (x86 und x64) deinstalliert habe, das Directx Sdk installiert habe(jetzt ging es) und dann die Visual C++ 2010 Redistributables wieder installiert habe.

Nun hieß es in dem Buch, dass ich aus dem Directx Sample Browser ein Programm installieren sollte und in Visual C++ ausführen sollte. Soweit sogut.Projekt installiert, Visual C++ 2010 Express geöffnet, Projekt geladen. Ich habe auch, wie in dem Buch geschrieben, die VC++Verzeicnisse überprüft, damit das SDK auch in Visual C++ eingebunden wird. Doch nach dem Decompilieren kommt eine Fehlermeldung ,die so aussieht:

Unbenannt.PNG

In der Konsole erscheint während des Kompilierens außerdem so etwas:

Unbenannt1.PNG

Ich sitze wirklich schon mehrere Tage an diesem Problem und hoffe, ihr habt ein paar Lösungsvorschläge,denn ich möchte ungern 40€ umsonst ausgegeben haben ;D.Außerdem interessiert mich die Spieleprogrammierung sehr.
Ich habe,wie gesagt, schon zahlreiche Vorschläge aus dem Internet ausprobiert, allerdings ohne Erfolg.
 
Zeig doch mal die Codestelle, in der das Direct3D Device erzeugt werden sollte.
 
Wie sieht denn der Code an der Stelle aus, wo du das Direct3D-Device erstellst (bzw. anzapfst)?
Fragst du da nach einem Fehlercode? Wenn's einen gibt, sollte man den an der Stelle abfangen und auswerten können.
 
Also ie Ausgabe im Konsolenfenster sieht so aus, dass im Pfad C:\Windows\SysWOW64 sehr viele Dateien geladen werden, außer die Dateien atidxx32.dll und aticfx32.dll. Außerdem steht da "C:\users\*mein Name*\desktop\programmierenlernen\c++\programme\directxsamples\simplesample11\dxut\core\dxut.cpp(3557): D3D11CreateDevice hr=E_FAIL (0x80004005)"
Hier ein Bild:
Unbenannt2.PNG
 
Die Meldung mit der PDB-Datei ist irrelevant.

Aber jetzt hast du eine Fehlernummer. Nach der musst du jetzt googeln und dann hast du die Fehlerbeschreibung, aus der du sicher die Fehlerursache ableiten kannst.
 
Aber E_FAIL ist nicht wirklich aussagekräftig.

Wenn du den Debugmodus von DirectX aktiviert hast (und vor allem die Fehlerausgabe), dann steht in der Ausgabe z.B. sowas wie
Code:
D3D11 INFO: Create ID3D11Context: Name="unnamed", Addr=0x00274940, ExtRef=1, IntRef=0 [ STATE_CREATION INFO #2097225: CREATE_CONTEXT]
D3D11 INFO: ID3D11DeviceContext::Draw: The depth stencil unit or pixel shader expects a Depth Stencil View, but none is bound. This is OK, as reads of an unbound Depth Stencil View are defined to return 0; and writes are discarded. It is also possible the developer knows the data will not be used anyway. This is only a problem if the developer actually intended to bind a Depth Stencil View here. [ EXECUTION INFO #3146080: DEVICE_DRAW_DEPTHSTENCILVIEW_NOT_SET]
Und wie man an der zweiten Meldung exemplarisch sieht, können diese Hinweise relativ hilfreich sein.

Der Debugmodus von DirectX bekommst du unter Start->Programme->Microsoft DirectX SDK (June 2010)->DirectX Utilities->DirectX Control Panel
Dort:
Scope: dein Projektpfad hinzufügen
Force On (Achtung: Dadurch kann ein Spiel (das du nebenher mal spielen willst) dann möglicherweise ruckeln).
Falls du gleich debuggen willst:
Enable break on functionality
break on Severity: Error Warning Corruption
 

Ähnliche Themen

Zurück
Oben