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

31

11.03.2009, 19:11

du meinst dieser Internet link der dann im exe-ordner erstellt wird?


INFO: TriBase-Engine wird initialisiert... (tribase.cpp, Zeile 86, Funktion tbInit)
INFO: Initialisierung komplett! (tribase.cpp, Zeile 104, Funktion tbInit)
WARNUNG: tbExit wurde nicht aufgerufen! Wird automatisch erledigt... (tribase.cpp, Zeile 48, Funktion DllMain)
INFO: TriBase-Engine wird heruntergefahren... (tribase.cpp, Zeile 113, Funktion tbExit)
INFO: Alle Speicherbereiche freigegeben! (tbmemory.cpp, Zeile 116, Funktion tbMemExit)
INFO: Herunterfahren abgeschlossen! (tribase.cpp, Zeile 149, Funktion tbExit)


aber das gibt mir keine wirkliche hilfestellung

32

11.03.2009, 19:21

Zitat von »"Hippocampus"«

aber das gibt mir keine wirkliche hilfestellung

Mir schon... ;)

Ich glaube, "Käsekönig" hatte das Problem neulich.

*mal stöbern geh*

Edit:
Da lag es daran, dass im Code auf die nicht initialisierte Variable g_Direct3DParameters zugegriffen wurde.
Also durchweg g_Direct3DParameters statt Direct3DParameters (WinMain) verwenden.
fka tm

33

11.03.2009, 19:50

In meiner cpp-file wo ich das dreieck letztlich rendere hab ich aber immer g_Direct3DParameters.........weißt du noch wo du den thread vom "Käsekönig" gefunden hast? Dann kann ich das vielleicht besser nachvollziehen.......aber in InitDirect3D oder den anderen Hilfsfunktionen wie InitWindow muss ich nichts ändern oder? Ich nehme mal an das sich dieser fehler in der Datei mit der WinMain funktion verbirgt.

34

11.03.2009, 19:58

Ja richtig, in der WinMain wird Direct3DParameters verwendet, und weiter oben g_Direct3DParameters. Also alles in der Dreieck.cpp

Hier der besagte Thread: https://www.spieleprogrammierer.de/phpBB2/viewtopic.php?t=11237&postdays=0&postorder=asc&start=15
fka tm

35

11.03.2009, 20:32

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// Windows-Hauptfunktion

int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   char* pcCmdLine,
                   int iShowCmd)
{
    tbResult Result;

    // Initialisierung

    Result = InitApplication();
    if(Result == TB_CANCELED) return 0;
    else if(Result)
    {
        MessageBox(NULL, TEXT ("Fehler beim Initialisieren der Anwendung!"),
                   TEXT ("Fehler"), MB_OK | MB_ICONEXCLAMATION);
        return 1;
    }

    // Nachrichtenschleife

    tbDoMessageLoop(Render, Move);

    // Herunterfahren

    ExitApplication();
    
    
    return 0;


Ich seh da irgendwie kein Direct3DParameters

Und ausserdem hab ich den Code ja kopiert und auf der CD funktioniert es ja....

36

11.03.2009, 20:41

Vermutlich wird DirectX irgendwo in der Funktion InitApplication() initialisiert.
Kannst du den Code mal posten?
fka tm

37

11.03.2009, 20:43

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
// Initialisierungsfunktion

tbResult InitApplication()
{
    tbResult Result;

    // TriBase-Engine initialisieren

    tbInit();

    // Direct3D-Optionen abfragen (vom Benutzer gewählt)

    Result = GetDirect3DParameters(&g_Direct3DParameters);
    if(Result == TB_ERROR)
    {
        // Es trat ein Fehler auf!

        MessageBox(NULL, TEXT("Fehler beim Abzählen!"),TEXT ("Fehler"),
                   MB_OK | MB_ICONEXCLAMATION);
        return TB_ERROR;
    }
    else if(Result == TB_CANCELED)
    {
        // Der Dialog wurde abgebrochen!

        return TB_CANCELED;
    }

    // Fenster initialisieren. Die Größe hängt vom gewählten

    // Videomodus ab, der in der Parameterstruktur gespeichert ist.

    if(InitWindow(g_Direct3DParameters.VideoMode.Width,
                  g_Direct3DParameters.VideoMode.Height,
                  "Beispielprogramm Nr. 3: Das erste Dreieck",
                  LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_ICON1))))
    {
        // Fehler beim Erstellen des Fensters!

        MessageBox(NULL, TEXT ("Fehler beim Erstellen des Fensters!"),
                   TEXT ("Fehler"), MB_OK | MB_ICONEXCLAMATION);
        return TB_ERROR;
    }

    // Direct3D mit den abgefragten Einstellungen initialisieren

    if(InitDirect3D(&g_Direct3DParameters,
                    g_hWindow))
    {
        // Fehler!

        MessageBox(g_hWindow, TEXT ("Fehler beim Initialisieren von Direct3D!"),
                   TEXT ("Fehler"), MB_OK | MB_ICONEXCLAMATION);
        ExitApplication();
        return TB_ERROR;
    }

    // Szene initialisieren

    if(InitScene())
    {
        // Fehler!

        MessageBox(g_hWindow, TEXT ("Fehler beim Initialisieren der Szene!"),
                   TEXT ("Fehler"), MB_OK | MB_ICONINFORMATION);
        ExitApplication();
        return TB_ERROR;
    }

    // Alles OK!

    return TB_OK;
}

38

11.03.2009, 20:52

Hast du die Ressourcen (dreieck.rc, resource.h) eingebunden?
Denn der Konfigurationsdialog wird ja nicht aufgerufen, oder?
fka tm

39

11.03.2009, 20:57

resource.h auf jeden fall, von dreieck.rc war weniger die rede im Buch....was den konfigurationsdialog angeht ,wenn du das fenster meinst wo man die Videomodus einstellungen treffen kann,nein der wurde nicht aufgerufen.

40

11.03.2009, 21:05

Dann haben wir ja den Bösewicht! ;)

Füg die .rc (dreieck.rc ?) halt dem Projekt hinzu.
Die brauchts auf jeden Fall. Denn dort ist u.a. die Dialogbox (die nicht erscheint) definiert.
fka tm

Werbeanzeige