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

01.06.2008, 22:44

windowed = false geht nicht

hi @ all

ich möchte die present_parameters in einer .ini speichern und dann abfragen. die auflösung funktioniert auch soweit aber sobald er den windowed aus der .ini auslesen soll und der auch noch auf 0(false) sthet kommt ein fehler bei createdevice. wenn er aber auf 1(true) steht funktioniert es.

hier das problem:

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
bool CInitDirect3D::InitDirect3D(HWND hWnd)
{
    m_lpD3D = Direct3DCreate9(D3D_SDK_VERSION);

    int windowed = String_Convert.string_to_int(Width("2"));

    if(NULL == m_lpD3D)
    {
        MessageBox(NULL, "Es konnte kein D3D-Objekt erstellt werden!", "Fehler!", MB_OK | MB_ICONERROR);

        tbWriteToLog("es konnte kein D3D-Objekt erstellt werden(Direct3DCreate9)");

        return false;
    }

    D3DPRESENT_PARAMETERS d3dpp;
    ZeroMemory(&d3dpp, sizeof(d3dpp));

    d3dpp.SwapEffect        = D3DSWAPEFFECT_DISCARD;
    d3dpp.hDeviceWindow     = hWnd;
    d3dpp.Windowed          = 1;
    d3dpp.BackBufferWidth   = window_width();
    d3dpp.BackBufferHeight  = window_height();
    d3dpp.BackBufferFormat  = D3DFMT_A8R8G8B8;

    if(FAILED(m_lpD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, &d3dpp, &m_lpD3DDevice)))
    {
        MessageBox(NULL, "Direct3D konnte nicht initialisiert werden!", "Fehler", MB_OK | MB_ICONERROR);

        tbWriteToLog("Direct3D konnte nicht initialisiert werden(CreateDevice)");

        return false;
    }

    TB_INFO("DirectX wurde erfolgreich initialisiert!");

    return true;
}


danke schonmal für antworten

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

2

01.06.2008, 22:49

Du musst den Backbufferformat auch einstellen.

Am besten nimmst du dafür D3DFMT_UNKNOWN,wenn es im Fenstermodus läuft.

Anonymous

unregistriert

3

01.06.2008, 22:50

Was für ein Fehler kommt? HRESULT bitte angeben, unsere Kristallkugel ist leider schon in Rente gegangen...

4

01.06.2008, 22:59

hresult =

C-/C++-Quelltext

1
Der Aufruf von m_lpD3D->CreateDevice verursachte den DirectX-Fehler Unknown! Beschreibung: n/a

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

5

01.06.2008, 23:10

Hast du das gemacht, was ich gesagt habe?

6

01.06.2008, 23:12

Zitat von »"drakon"«

Hast du das gemacht, was ich gesagt habe?

ja bringt ber nichts. bei hresult hatte ich ein kleinfen fehler gemacht :roll: jetzt gab es mal ne bessere fehlermeldung

C-/C++-Quelltext

1
Der Aufruf von m_lpD3D->CreateDevice verursachte den DirectX-Fehler S_OK! Beschreibung: The function completed successfully

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

7

01.06.2008, 23:21

Das ist kein Fehler. ;) - Das hat jetzt funktioniert..

8

02.06.2008, 08:41

Zitat von »"drakon"«

Das ist kein Fehler. ;) - Das hat jetzt funktioniert..


nein der fullscreen geht immer noch nicht. ich bekomm die fehlermeldung das createdevice fehlschlägt und danach startet das programm im windowed = true modus

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

9

02.06.2008, 09:03

Seh ich das richtig:

C-/C++-Quelltext

1
d3dpp.Windowed            = 1;


Laut deinem obigen Code gibts nicht viel Entscheidungsraum zwischen den möglichen Modi.
@D13_Dreinig

10

02.06.2008, 10:38

@David_pb er hat darauf hingwiesen das es bei false auch nicht läuft...


ich kann nur immer wieder sagen, geht auf die DX Documentation Seite:

http://msdn.microsoft.com/en-us/library/bb172588(VS.85).aspx

Setz noch die folgenden Parameter:

- PresentationInterval http://msdn.microsoft.com/en-us/library/bb172585(VS.85).aspx

- FullScreen_RefreshRateInHz
NO RISK NO FUN

Werbeanzeige