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

neido

Treue Seele

  • »neido« ist der Autor dieses Themas

Beiträge: 225

Wohnort: Wien

  • Private Nachricht senden

1

09.05.2008, 12:43

DirectX wird nicht initialisiert

Es ist zwar eigentlich kein Buchspezifisches Thema aber da mein Programm ausschließlich aus einigen Zeilen aus einem Beispielprogramm dieses Buches besteht schreibe ich das mal hier rein:

Folgendes sollte mein erstes Testprogramm mit DirectX werden, das einfach nur DX initialisiert und wieder beendet:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <StdIO.h>
#include <D3D9.H>
#include <Windows.h>

int WINAPI WinMain (HINSTANCE hInstance,
                    HINSTANCE hPrevInstance, 
                    LPSTR pcCmdLine, 
                    int iShowCmd){

    PDIRECT3D9 pD3D = Direct3DCreate9(D3D_SDK_VERSION);
    if (pD3D)
        MessageBox(NULL, L"DX konnte nicht initialisiert werden", L"Fehler", MB_OK|MB_ICONEXCLAMATION);
    else
        MessageBox(NULL, L"DX is da", L"paast", MB_OK|MB_ICONEXCLAMATION);

    pD3D->Release();

    return 0;
}


es läuft alles glatt, nur kommt die Messagebox mit "Fehler", was bedeuten muss, das DX nicht richtig initialisiert wurde.

Ich würde euch gerne eine Error-Message liefern aber weis nicht wie, pD3D ist ja nicht vom Typ HRESULT.

Ich verwende das aktuellste Windows SDK mit dem uralten DX SDK 2004 von der Buch-CD. Mein PC läuft mit WinXP SP2. Ich habe DX installiert, einen aktuellen ATI Grafiktreiber.

2

09.05.2008, 13:39

Ich würde sagen, du musst einfach nur die meldungen vertauschen, oder dies:

C-/C++-Quelltext

1
if(pD3D)


in dies

C-/C++-Quelltext

1
if(!pD3D)


ändern

also so wie mir das aussieht, wird D3D richtig initialisiert.

3

09.05.2008, 13:59

directx wird initialisiert aber du gibst ne fehlermeldung aus das es nicht initialisiert wurde. wie schon gesagt wurde entweder in der if anweisung ein ! vor pD3D machen oder die Messageboxen vertauschen

edit:

du brauchst windows.h nicht mit includen da das d3d9.h schon macht, schaden kanns aber net

neido

Treue Seele

  • »neido« ist der Autor dieses Themas

Beiträge: 225

Wohnort: Wien

  • Private Nachricht senden

4

09.05.2008, 15:16

tatsächlich? aus Davids Buch ist das anders zu entnehmen. Ich habe den code aus der 2. Auflage des Buches. Genau lautet er:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
...
PDIRECT pD3D = Direct3DCreate9(D3D_SDK_Version);
if(pD3D)
{
MessageBox( NULL, "Fehler blabla..", "Fehler", MB_OK|MB_ICONEXCLAMATION );
return 1;
}
...

ein Fehler im Buch oder ein Verständnisfehler meinerseits? bei der initialisierung von TriBase gibt tbInit ja auch false zurück wenns funzt.

5

09.05.2008, 15:20

Korrekturen zur 2ten Auflage.

Siehe erster Post, also doch ein Fehler des Buches. ;)

neido

Treue Seele

  • »neido« ist der Autor dieses Themas

Beiträge: 225

Wohnort: Wien

  • Private Nachricht senden

6

09.05.2008, 15:26

Da bin ich ja beruhigt :)

Das Wochenende bin ich jetzt ohne PC, ab Di dürft ihr euch sicher über weitere noob-fragen von mir freuen. ;)

Werbeanzeige