Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Schwarzefee

Treue Seele

  • »Schwarzefee« ist der Autor dieses Themas

Beiträge: 155

Wohnort: Ost-Sachsen

Beruf: Programmierer

  • Private Nachricht senden

1

28.11.2013, 21:24

DX11 - CreateDevice schlägt fehl

Hi,

ich habe angefangen, mich mit DirectX11 auseinander zu setzen:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
bool System::Initialize(bool vsync, bool fullscreen)
{
    this->VsyncEnabled = vsync;
    this->Fullscreen = fullscreen;

    unsigned int flags = 0;
    #if defined (DEBUG) || defined (_DEBUG) || defined (DBG)
        flags |= D3D11_CREATE_DEVICE_DEBUG;
    #endif

    //Device erstellen
    HRESULT hResult;
    hResult = D3D11CreateDevice(0, D3D_DRIVER_TYPE_HARDWARE, 0, flags, 0,0, D3D11_SDK_VERSION, &this->DXDevice, &this->FeatLevel, &this->DXDeviceContext);
    if (FAILED(hResult))
    {
        return false;
    }   

    this->Init = true;
    return true;
}


Leider schlägt das D3D11CreateDevice fehl. Hat jemand ne Idee warum, bzw. was ich falsch mache?
Wie kann ich rausbekommen, warum das fehlschlägt? Der Debugger zeigt mir nur hResult = E_FAIL an


Gruß

2

28.11.2013, 21:32

Hey,

spontan fällt mir jetzt auf, dass du keine D3D_FEATURE_LEVEL übergibts (bin m ir nicht sicher ob es da nen default-Wert gibt) ;)
BTW: Hast du eine DX11-fähige GraKa?

mfg
"Wer Angst hat, dass ihm seine Ideen geklaut werden, der scheint nicht viele zu haben. "

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

3

28.11.2013, 21:32

Unterstützt deine Karte bzw. dein Treiber denn DX11?

FSA

Community-Fossil

  • Private Nachricht senden

4

28.11.2013, 21:33

Rufe mal folgende Funktionen auf:

C-/C++-Quelltext

1
2
DXGetErrorString(HRESULT),
DXGetErrorDescription(HRESULT)

Was sagt die Ausgabe? (Alt+F2)
Und versuche mal als zweiten Parameter D3D_DRIVER_TYPE_UNKNOWN anzugeben.

Dann kann man mehr sagen.

EDIT: Heute war ich aber langsam.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

5

29.11.2013, 02:08

Wenn du 0 als Adapter angibst, musst du D3D_DRIVER_TYPE_UNKNOWN verwenden.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

6

29.11.2013, 08:21

Wenn du 0 als Adapter angibst, musst du D3D_DRIVER_TYPE_UNKNOWN verwenden.


Eigentlich ist es andersrum: DRIVER_TYPE_UNKNOWN muss verwendet werden wenn ein Adapter angegeben wird. Im Falle, dass für pAdapter ein nullptr übergeben wurde ist DRIVER_TYPE_UNKNOWN nicht erlaubt.

Zum Thema: Fehlerhafte Parameter liefern i.A. E_INVALIDARG. Da dein Rückgabewert E_FAIL ist tippe ich mal darauf, dass du nicht das Windows8 SDK verwendest?! Ansonsten solltest du mal darauf umsteigen. Die alte DirectX SDK wird seit einiger Zeit nicht mehr unterstützt.
@D13_Dreinig

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

7

29.11.2013, 08:23

Ach, stimmt...

Schwarzefee

Treue Seele

  • »Schwarzefee« ist der Autor dieses Themas

Beiträge: 155

Wohnort: Ost-Sachsen

Beruf: Programmierer

  • Private Nachricht senden

8

29.11.2013, 09:57

Hi,

danke für die Antworten.

Kann man das Win8 SDK auch mit Windows7 benutzen?
DirectX SDK benutze ich Jun10.



Gruß

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

9

29.11.2013, 10:00

Kann man das Win8 SDK auch mit Windows7 benutzen?
DirectX SDK benutze ich Jun10.


Ja das funktioniert auch mit Windows7. Falls du VS 2010 verwenden solltest, kannst du dich ja hier mal entlang hangeln:

http://blogs.msdn.com/b/vcblog/archive/2…5/10287354.aspx
http://blogs.msdn.com/b/vcblog/archive/2…e-projects.aspx

Wie gesagt, das June 2010 DirectX SDK wird leider nicht mehr unterstützt.
@D13_Dreinig

Schwarzefee

Treue Seele

  • »Schwarzefee« ist der Autor dieses Themas

Beiträge: 155

Wohnort: Ost-Sachsen

Beruf: Programmierer

  • Private Nachricht senden

10

29.11.2013, 12:18

Hi,

danke für die Antwort.
Ich benutze VS2008, sollte es da Probleme mit dem WinSDK geben?
Kann es leider erst morgen selber ausprobieren.

Noch eine Frage: Wenn ich mit dem Win8 SDK für DirectX11 programmieren, funktioniert das Programm dann auch auf z.B. WinVista (mit DirectX11-GraKa)?


Gruß

Werbeanzeige