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

15.05.2015, 18:12

SFML Vollbild an- und ausmachen

Hallo liebe Spieleprogrammierer

Ich habe ein kleines Menü gemacht darunter auch die Einstellungen. Jetzt frage ich mich wie man das machen kann, dass wenn man auf den Knopf drückt, das Spiel Vollbild wird und wenn man nochmal drauf klickt wieder klein?
Es gibt leider keine Funktion zb. setfullscreen oder so :(

Müsste ich dafür eine bool Variable übergeben?

Hier mein bisheriges Ergebnis:

C-/C++-Quelltext

1
2
3
4
5
6
7
void MainOptionState::ProcessEvents(Game &game)
{
    if (fullscreenClicked == true)
    {
        
    }
}


Freundlich Grüsst SlyGamer72HD

Swoerm

Alter Hase

Beiträge: 451

Wohnort: 127.0.0.1

  • Private Nachricht senden

2

15.05.2015, 18:21

Du kannst dein Fenster neu erstellen z.B. so:

C-/C++-Quelltext

1
2
3
4
// Für Fenster
MainWindow.create (sf::VideoMode (DeineFenstergröße.x, DeineFenstergröße.y, 32), "Dein Fenstername", sf::Style::Default);
// Für Vollbild
MainWindow.create (sf::VideoMode (DeineFenstergröße.x, DeineFenstergröße.y, 32), "Dein Fenstername", sf::Style::Fullscreen);

C-/C++-Quelltext

1
2
    /* Keep the compiler happy */
    return(0);

3

15.05.2015, 18:28

Soweit ich weiß geht es nicht mit der SFML, das fenster in den vollbild zu setzen, ohne es neu zu erstellen. Du könntest, wenn du für Windows compilierst, die WinAPI benutzen und das Fenster so in den Vollbild setzt:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <windows.h>
//.....

HWND hWnd = sfmlWindow.getSystemHandle(); //window handle des sfml-fensters

int windowStyle = WS_POPUP;
SetWindowLongPtr(hWnd, GWLP_STYLE, (LONG_PTR)windowStyle);  //fenster soll keinen rahmen haben

int windowW = GetSystemMetrics(SM_CXSCREEN);
int windowH = GetSystemMetrics(SM_CYSCREEN); //höhe und breite des bildschirms bekommen
int windowX = 0;
int windowY = 0; //position des fensters

SetWindowPos(hWnd, 0, windowX, windowY, windowW, windowH, 0); //fenster über den ganzen schirm strecken


//fertig ;)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Roflo« (15.05.2015, 18:47)


BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

4

15.05.2015, 18:35

Keine gute Idee, Roflo.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

5

15.05.2015, 18:39

Also sollte ich es wie Swoerm machen?
Ich hatte es gestern auch mal so ausprobiert gehabt und dann ist das Programm abgestürzt. Auch Visual Studio.

6

15.05.2015, 18:43

Wenn man auf Windows setzt, warum nicht? Wenn man das Fenster neu erstellt, ist doch der OpenGL Context weg und muss Texturen und alles andere wieder neu laden.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

7

15.05.2015, 18:57

1) SFML abstrahiert die komplette Window-API für den Entwickler. Es ist also unnötig.
2) SFML bietet einen vernünftigen Weg an - create(...)
3) Geht man mit der WinAPI an SFML vorbei, wird der interne Zustand von SFML inkonsistent - viele Methoden geben dann nur noch Unfug zurück und führen zu unerwarteten Ergebnissen.
4) Das Fenster auf die Desktop-Größe zu stretchen ist etwas anderes als ein Vollbildmodus-Fenster - auch technisch, nicht nur logisch
5) Plattform-abhängig zu werden, obwohl SFML Plattform-unabhängig ist, ist doch offensichtlich kontraproduktiv.

Also Finger weg von der WinAPI, wenn SFML das selbst kann. Alles andere bringt nur Ärger.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

8

15.05.2015, 19:17

Hast ja recht, ist unschön, aber sonst ist doch der OpenGL Context am Arsch, oder?

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

9

15.05.2015, 20:23

Eigentlich nicht, aber falls da doch Probleme entstehen sollten kannst du mit sf::ContextSettings einen eigenen übergeben.
WIP Website: kevinheese.de

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

10

15.05.2015, 21:16

Da geht höchstens was "in den Arsch", wenn man an SFML vorbei mit der WinAPI herum hantiert. Mit den von SFML bereitgestellten Methoden läuft alles so, wie es soll.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige