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

21.08.2009, 19:11

Window Mode ruckelt

Hi,
ich glaube kaum, dass ihr mir helfen könnt (weil das Problem eigentlich überall liegen kann), aber poste es trotzdem mal:

Wenn ich mein (noch nicht fertiges) Spiel im Fenstermodus starte, ruckelt es (20-30 FPS), bei Fullscreen hab ich 61 FPS (wie im FPS Limiter eingestellt).
CPU Auslastung ist bei beiden Modi 5-10 Prozent
Dieser Post wurde aus artgerecht gehaltenen, 100% chlorfrei gebleichten, handelsüblichen Elektronen aus Freihaltung erzeugt.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

21.08.2009, 19:37

Hast du vielleicht eine Dual Head Grafikkarte (zwei Bildschirme) und befindet sich dein Fenster auf dem sekundären Bildschirm? Bei manchen Grafikkarten/Treibern kann es sein dass du auf dem sekundären Bildschirm massive Leistungseinbrüche hast.
Ansonsten, was für einen SwapEffect stellst du in den PRESENT_PARAMETERS ein?

3

21.08.2009, 23:22

Hi,
danke für deine Antwort.

Ich arbeite nur mit einem Bildschirm und einem High-End Notebook - deshalb glaube ich nicht, dass es irgendwie an Problemen mit der Leistung liegt / am Spiel zu wenig optimiert wurde (was du ja auch sagst).

Hier ist der komplette Initialisierungscode meiner Engine (teilw. vom Buch von Christian Rousselle übernommen):

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
    m_lpD3D = Direct3DCreate9(D3D_SDK_VERSION);

    if(NULL == m_lpD3D)
    {
        MessageBox(0, "Engine: 3D Objekt konnte nicht erzeugt werden!", NULL, MB_OK);
        return FALSE;
    }

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

    PParams.SwapEffect       = D3DSWAPEFFECT_DISCARD;
    PParams.hDeviceWindow    = hWnd;
    PParams.Windowed         = bWindowed; // Je nachdem: True oder False


    PParams.BackBufferWidth  = RESOLUTION_X;
    PParams.BackBufferHeight = RESOLUTION_Y;
    PParams.BackBufferFormat = D3DFMT_A8R8G8B8;

    HRESULT hr;

    if(FAILED(hr = m_lpD3D->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &PParams, &m_lpD3DDevice)))
    {
        const char* Err = DXGetErrorDescription9(hr);
        DXTRACE_MSG(Err);
        return FALSE;
    }

    m_lpD3DDevice->GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO, &m_lpBackBuffer);

    return TRUE;
[/cpp]
Dieser Post wurde aus artgerecht gehaltenen, 100% chlorfrei gebleichten, handelsüblichen Elektronen aus Freihaltung erzeugt.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

21.08.2009, 23:33

D3DCREATE_SOFTWARE_VERTEXPROCESSING

...

versuchs mal mit D3DCREATE_HARDWARE_VERTEXPROCESSING ;)

5

21.08.2009, 23:54

Danke, funktioniert ;)

Hätte ich eigentlich auch selber draufkommen können^^

Aber merkwürdig dass in dem ganzen Buch diese Engine verwendet wird (Auch bei 3D Anwendungen)
Dieser Post wurde aus artgerecht gehaltenen, 100% chlorfrei gebleichten, handelsüblichen Elektronen aus Freihaltung erzeugt.

6

22.08.2009, 21:55

Hi,
es funktioniert doch nicht - es gibt "Zeiten", wann es irgendwann funktioniert, und wann nicht (ohne änderung des Quellcodes bzw. rebuild).

Sogar wenn ich alle Funktionen des Progammes (Draw, etc.) weglasse komme ich nur auf 51 FPS statt 61 :(
Dieser Post wurde aus artgerecht gehaltenen, 100% chlorfrei gebleichten, handelsüblichen Elektronen aus Freihaltung erzeugt.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

7

22.08.2009, 22:03

Hast du auch eine brauchbare Grafikkarte und entsprechend aktuelle Treiber dafür installiert? Macht es vielleicht einen Unterschied wenn du als BackBufferFormat D3DFMT_X8R8G8B8 anstatt von D3DFMT_A8R8G8B8 verwendest?

8

23.08.2009, 11:28

mein jump n run (siehe projekte) hatte im fenster das gleiche problem. dann hab ich die PParams.PresentationInterval = D3DPRESENT_INTERVAL_ONE dazu gesetzt. dann lief alles flüssig und ohne einbrüche. hoffe das hielft auc bei dir.

mfg fred

Werbeanzeige