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

1

04.07.2011, 16:02

Beenden

Hallo
Ich würde mal sagen diese frage ist wirklich sehr doof =)
Allerdings weis ich wirklich nicht wie ich es anstellen soll, also:
Verwende C++ und DirectX 11
Habe ein Spiel geschrieben was im Vollbild ist und keinen Rahmen hat.
Nun wollte ich das Spiel Beenden mit dem Code:

C-/C++-Quelltext

1
DXUTShutDown();

Wenn ich das mache kommt ganz kurz eine Fehlermeldung und ist wieder weg.
Ich würde jetzt gerne eine Methode wissen wie ich mein Programm beenden kann ohne das eine Fehlermeldung kommt und alle Objekte Released werden (Gelöscht)
MFG

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

04.07.2011, 16:13

Und was für eine Fehlermeldung kommt da genau?

3

04.07.2011, 16:32

Das ist ja das Blöde die ist so schnell wieder weg das ich nicht sehe nur diese bämm höre und ganz kurz etwas aufblinkt

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

4

04.07.2011, 16:39

Also wenn du mit der einen Zeile alleine versuchst das alles zu Beenden...
Das Device will geschlossen werden, das Fenster will geschlossen werden, die Resourcen wollen vorher freigegeben werden, etc.

Aber die Fehlermeldung sollte auch im Ausgabefenster deines Debuggers zu sehen sein.

5

04.07.2011, 16:41

Also in der Funktion steht drin:

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
void WINAPI DXUTShutdown( int nExitCode )
{
    HWND hWnd = DXUTGetHWND();
    if( hWnd != NULL )
        SendMessage( hWnd, WM_CLOSE, 0, 0 );

    GetDXUTState().SetExitCode( nExitCode );

    DXUTCleanup3DEnvironment( true );

    // Restore shortcut keys (Windows key, accessibility shortcuts) to original state
    // This is important to call here if the shortcuts are disabled, 
    // because accessibility setting changes are permanent.
    // This means that if this is not done then the accessibility settings 
    // might not be the same as when the app was started. 
    // If the app crashes without restoring the settings, this is also true so it
    // would be wise to backup/restore the settings from a file so they can be 
    // restored when the crashed app is run again.
    DXUTAllowShortcutKeys( true );

    // Shutdown D3D9
    IDirect3D9* pD3D = GetDXUTState().GetD3D9();
    SAFE_RELEASE( pD3D );
    GetDXUTState().SetD3D9( NULL );

    // Shutdown D3D11
    IDXGIFactory1* pDXGIFactory = GetDXUTState().GetDXGIFactory();
    SAFE_RELEASE( pDXGIFactory );
    GetDXUTState().SetDXGIFactory( NULL );

    if( GetDXUTState().GetOverrideRelaunchMCE() )
        DXUTReLaunchMediaCenter();
}

Und im debugger ist auch nur ganz kurz dann ist alles zu

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

6

04.07.2011, 16:59

Und im debugger ist auch nur ganz kurz dann ist alles zu


Ja aber dann steht doch trotzdem alles, was passiert ist in Ausgabefenster.

7

04.07.2011, 20:47

Irgendwie ne.
Bei mir ist da nichts nur am Ende Beendet mit Code(0x0).
Sonst ist da nichts mit Fehlermeldung oder sonstigem.

MCP

Alter Hase

Beiträge: 513

Wohnort: Paderborn

Beruf: Software-Entwickler

  • Private Nachricht senden

8

04.07.2011, 21:52

Da müsste viel mehr stehen... oO Mindestens die ganzen DLLs die gerade geladen werden und die ganzen Threads die laufen.

9

05.07.2011, 15:28

Vielleicht beendet er sofort alles im debugger, weil das spiel aus einer vorhandenen datei ausliest und schreibt?

Fireball

Alter Hase

Beiträge: 415

Wohnort: Werne

Beruf: Dipl. Inf.

  • Private Nachricht senden

10

05.07.2011, 16:23

IUnknown

Hallo,

rufst du denn auch immer schön artig die Methode release auf?

Bitte auch nicht die Devices usw. vergessen, die du mit der Factory erzeugt hast.

Das riecht gerade zu nach Memory Leaks. :thumbsup:

Schön Grüße

Fireball

Werbeanzeige