Vollbildschirmmodus



  • Hallo!

    Ich hab ne Frage: Ich progammiere im Visual C++ ein Spiel. Dabei will ich den ganzen Bildschirm nutzen. Wie kann ich das machen.(wie auf DOS, ohne Taskleiste und ohne Titelleiste)

    DANKE!!



  • Ich würde dir da DirectX oder OpenGL empfehlen.



  • Was von beiden ist eigentlich einfacher?



  • Frag die vom Spieleforum, hab damit noch nix zu tun gehabt 🙂



  • Original erstellt von Erhard Henkes:
    Was von beiden ist eigentlich einfacher?

    Darüber gab's schon Trillionen Debatten im Spieleforum. Also tut mir einen Gefallen und fragt sowas nicht!! Oder bringt ein paar chemische Keulen mit!!

    In der FAQ des Spieleforum findet man dazu genügend Beginner-Stoff.

    Grob: OpenGL ist strukturiert, C-like
    DirectX ist OO, C++-like

    OpenGL soll für Anfänger einfacher sein.
    Aber die neuesten Features der GraKa-Hardware auszureizen ist echt beschi**en damit!
    Da hat DX die Nase vorn.

    Trotzdem ist das mehr 'ne Sache zwischen Mercedes und BMW, als daß es da wirklich grundlegende Unterschiede z.B. in der Performance gäbe...

    Und nicht vergessen:
    OpenGL ist eine reine 3D-Grafik-API!
    DirectX ist eine API die VIELE VERSCHIEDENE Funktionialitäten der Spiele-Entwicklung überdeckt.
    Die 3D-API heißt da mittlerweile DirectX Graphics (früher Direct3D).
    Für Netzwerk-Untertützung gibt's DirectPlay.
    Für Sound/Musik DirectX Audio (früher DirectMusic / DirectSound).
    Für Eingabe (Maus, Tastatur, ForceFeedback-Joystick, Cybersex-Anzüge, etc.) DirectInput.

    Hoffe geholfen zu haben, CU



  • OpenGL ist also einfacher als DirectX, aber nur für 3D-Grafik. Dann sollte man sich wohl eher für DirectX entscheiden. Was mich an DirectX stört sind die ständigen Releasewechsel, die dazu zwingen, den Code upzudaten, das ist doch bei OpenGL konservativer, oder sehe ich da etwas verkehrt?



  • @Erhard
    Naja, man muss ja nicht unbedingt auf die neueste Version wechseln, wenn auch die gerade geläufige reicht.



  • Um im Volbildmodus zu wechseln, ist DirectX oder OpenGL nicht unbedingt notwenig. So gehts ohne:

    SIZE sOldRes; // <-- Globale Variable
    
    ....
    
    sOldRes.cx = GetSystemMetrics(SM_CXSCREEN);
    sOldRes.cy = GetSystemMetrics(SM_CYSCREEN);
    DEVMODE mode;
    ZeroMemory(&mode, sizeof(mode));
    mode.dmSize = sizeof(mode);
    mode.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT;
    mode.dmPelsWidth = 640; // zB. 640
    mode.dmPelsHeight = 480; // zB. 480
    ChangeDisplaySettings(&mode, 0);
    

    Befor das Programm beendet wird, muss die alte Auflösung wiederhergestellt werden:

    DEVMODE mode;
        ZeroMemory(&mode, sizeof(mode));
        mode.dmSize = sizeof(mode);
        mode.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT;
        mode.dmPelsWidth = sOldRes.cx;
        mode.dmPelsHeight = sOldRes.cy;
        ChangeDisplaySettings(&mode, 0);
        CDialog::OnCancel();
    

Anmelden zum Antworten