Forum de la communauté SFML

Aide => Fenêtrage => Discussion démarrée par: krockdur le Avril 16, 2016, 10:48:38 am

Titre: [RESOLU] Fullscreen - windows - OSX
Posté par: krockdur le Avril 16, 2016, 10:48:38 am
Bonjour à tous,

D'habitude je trouves toutes les réponses dans la documentation ou le forum mais sur ce problème, je sèche.

Je développe mon jeux sous Windows, et ce n'est que quand j'ai voulu le tester sur OS X que je me suis rendu compte du problème.

Je n'ai pas le même "rendu" du mode plein écran entre les deux OS.

Programme de test minimale :


#include <SFML/Graphics.hpp>
#include <vector>
#include <iostream>

int main()
{

        sf::RenderWindow window(sf::VideoMode(800, 600), "SFML works!", sf::Style::Fullscreen);


        while (window.isOpen())
        {
                sf::Event event;
                while (window.pollEvent(event))
                {
                        if (event.type == sf::Event::Closed)
                                window.close();
                }

                window.clear(sf::Color::White);
               
                window.display();
        }

        return 0;
}

 

Je m'assure d'avoir une résolution accepté par les deux  écrans (natifs : un 24" 1920 X 1080 et un 13" 2560 X 1600) : je choisis une 800 X 600.

Sur Windows j'ai bien un plein écran de 800 X 600 entièrement blanc.
Sur OS X, j'ai un plein écran noir avec un rectangle blanc de 800 X 600 au milieu. Il n'y a pas de "scale".

Merci.
Titre: Re : Fullscreen - windows - OSX
Posté par: Hiura le Avril 17, 2016, 10:55:23 am
En fait ça a été discuté il y a un bout de temps déjà ici : http://en.sfml-dev.org/forums/index.php?topic=17246.msg124034#msg124034

C'est probablement plus par manque de temps qu'autre chose que l'état de la discussion n'a pas avancé. :-/
Titre: Re : Fullscreen - windows - OSX
Posté par: krockdur le Avril 17, 2016, 11:07:33 am
Bonjour,

Effectivement j'ai trouvé cette discussion ainsi qu'un problème déjà remonté sur github, mais qui datent de plus d'un an.

Est ce prévu d'avoir d'avoir un "plein écran" sur os x ?

Merci.
Titre: Re : Fullscreen - windows - OSX
Posté par: Hiura le Avril 17, 2016, 11:08:29 am
Si tu as un patch qui tient la route à proposer, oui.  ;)
Titre: Re : Fullscreen - windows - OSX
Posté par: krockdur le Avril 17, 2016, 11:15:00 am
OK, je comprends. Je ne connais pas la source du problème mais cela dépasse certainement mes compétences  ;D

Merci.

EDIT : Si quelqu'un passe sur ce topic et a réussi à contourner le problème.
Titre: Re : Fullscreen - windows - OSX
Posté par: Cpl.Bator le Avril 17, 2016, 04:55:55 pm
et de créer un screen à la taille du bureau puis une vue en 800x600 ne résout pas ton problème en le contournant ?

static VideoMode sf::VideoMode::getDesktopMode() (http://www.sfml-dev.org/documentation/2.3-fr/classsf_1_1VideoMode.php#ac1be160a4342e6eafb2cb0e8c9b18d44)   
Titre: Re : Fullscreen - windows - OSX
Posté par: Hiura le Avril 17, 2016, 06:10:55 pm
ah, en passant : le ratio de tes deux écrans de 800x600 ne correspondent pas donc tu aurais un format étirer pas forcement appréciable si SFML te remplissait tout ton écran quand même.
Titre: Re : Re : Fullscreen - windows - OSX
Posté par: krockdur le Avril 17, 2016, 07:02:02 pm
et de créer un screen à la taille du bureau puis une vue en 800x600 ne résout pas ton problème en le contournant ?

static VideoMode sf::VideoMode::getDesktopMode() (http://www.sfml-dev.org/documentation/2.3-fr/classsf_1_1VideoMode.php#ac1be160a4342e6eafb2cb0e8c9b18d44)

Oui bonne idée, par contre sf::VideoMode::getDesktopMode() me retourne une résolution de 1280 X 800.
Donc j'ai un rectangle de 1280 par 800 centré au milieu des bandes noires.

Je vais chercher de ce côté.

Merci
Titre: Re : Fullscreen - windows - OSX
Posté par: Hiura le Avril 17, 2016, 08:02:16 pm
T'as la dernière version dispo sur Github? Si ce n'est pas le cas, teste ça car y a des trucs qui ont récemment été corrigés la dessus.
Titre: Re : Fullscreen - windows - OSX
Posté par: krockdur le Avril 17, 2016, 08:59:18 pm
J'ai bien la 2.3.2 prise sur le site.
Titre: Re : Fullscreen - windows - OSX
Posté par: krockdur le Avril 17, 2016, 09:16:57 pm
Ce qui semble étonnant, c'est que dans les paramètres système, la résolution est bien calée au réglée par défaut pour l'écran de 13" : 1280:800. Cependant, il ne s'agit pas de la résolution native de l'écran.... (2560:1600).

Tant pis, en tout cas merci pour votre aide.
Titre: Re : Fullscreen - windows - OSX
Posté par: Hiura le Avril 17, 2016, 09:22:07 pm
Non, pas la version 2.3.2... elle est vieille celle là ! =P

La version "master" sur Github, à compiler soit même (cf. tutoriel cmake). (Jamais testé, mais `brew install --HEAD sfml` peut faire l'affaire suivant comment.)
Titre: Re : Fullscreen - windows - OSX
Posté par: krockdur le Avril 17, 2016, 11:12:10 pm
Je viens de tester. Aucun changement.

 
Titre: Re : Re : Fullscreen - windows - OSX
Posté par: krockdur le Avril 18, 2016, 05:10:41 am
et de créer un screen à la taille du bureau puis une vue en 800x600 ne résout pas ton problème en le contournant ?

static VideoMode sf::VideoMode::getDesktopMode() (http://www.sfml-dev.org/documentation/2.3-fr/classsf_1_1VideoMode.php#ac1be160a4342e6eafb2cb0e8c9b18d44)

Donc lorsque que je défini une vue plus petite, elle ne met pas non plus en plein écran (mais fait bien la taille de la vue).


Game::Game(int width, int height, std::string title, sf::Color clearColor)
{
        _clearColor = clearColor;
    _window.create(sf::VideoMode(width, height), title, sf::Style::Fullscreen);
    sf::View vue;
    vue.setCenter(0, 0);
    vue.setSize(1024, 768);
    _window.setView(vue);
}

 
Titre: Re : Fullscreen - windows - OSX
Posté par: Hiura le Avril 18, 2016, 11:32:38 am
Peut-être qu'il y a un malentendu : la version master ne change pas comment le plein-écran est rendu mais corriger certains bugs, notamment au niveau de la taille retournée par getDesktopMode. Si tu utilises ce VideoMode, ta fenêtre prendra bien tout l'écran.
Titre: Re : Fullscreen - windows - OSX
Posté par: krockdur le Avril 18, 2016, 05:56:43 pm
Etrange, ca ne change rien.
_window.create(sf::VideoMode::getDesktopMode(), title, sf::Style::Fullscreen);

J'ai installé la SFML par brew install --HEAD sfml

Je n'avais pas supprimé la version précédente. Cela peut poser problème ?
Titre: Re : Fullscreen - windows - OSX
Posté par: Hiura le Avril 18, 2016, 06:10:23 pm
Oui, très certainement. Vérifie aussi que brew te donne bien la dernier version en checkant le SHA du commit que tu installes (si tant est que l'info est dispo). Sinon l'installation à la main c'est pas trop compliqué si jamais.
Titre: Re : Fullscreen - windows - OSX
Posté par: krockdur le Avril 18, 2016, 09:49:02 pm
J'essais de la compiler suivant le tuto. Mais j'ai une erreur lors du build dans Xcode.

/Library/Frameworks/Mono.framework/Headers/ft2build.h:56:10: 'freetype/config/ftheader.h' file not found

J'ai bien tous les headers dans /usr/local/include/freetype2/freetype/ (brew install freetype).
Titre: Re : Fullscreen - windows - OSX
Posté par: Hiura le Avril 18, 2016, 10:10:43 pm
Citer
Sous Windows et Mac OS X, toutes les dépendances nécessaires sont fournies directement avec SFML, vous n'avez rien à télécharger/installer. La compilation fonctionnera directement.

Donc installer freetype n'est pas nécessaire. ;-)

L'autre chose c'est que c'est le framework Mono qui contient freetype... Quand tu configures cmake, vérifie que les variables pour les dépendences pointent bien vers le dossier extlibs, à l'image de ceci (dans CMakeCache.txt ou la GUI de cmake si tu l'utilises) :

//Path to a file.
FREETYPE_INCLUDE_DIR_freetype2:PATH=/Users/m/Prog/Projects/SFML/git/SFML/extlibs/headers/freetype2

//Path to a file.
FREETYPE_INCLUDE_DIR_ft2build:PATH=/Users/m/Prog/Projects/SFML/git/SFML/extlibs/headers/freetype2

//Path to a library.
FREETYPE_LIBRARY:FILEPATH=/Users/m/Prog/Projects/SFML/git/SFML/extlibs/libs-osx/Frameworks/freetype.framework
Titre: Re : Fullscreen - windows - OSX
Posté par: krockdur le Avril 19, 2016, 06:55:17 am
Bonjour Hiura,

Xcode me donne toujours la même erreur après plusieurs test.
J'ai bien :

//Path to a file.
FREETYPE_INCLUDE_DIR_freetype2:PATH=/Users/julien/git/SFML/extlibs/headers/freetype2

//Path to a file.
FREETYPE_INCLUDE_DIR_ft2build:PATH=/Users/julien/git/SFML/extlibs/headers/freetype2

//Path to a library.
FREETYPE_LIBRARY:FILEPATH=/Users/julien/git/SFML/extlibs/libs-osx/Frameworks/freetype.framework
 

//Dependencies for the target
sfml-graphics_LIB_DEPENDS:STATIC=general;sfml-window;general;sfml-system;general;/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/OpenGL.framework;general;/Users/julien/git/SFML/extlibs/libs-osx/Frameworks/freetype.framework;general;/Users/julien/git/SFML/extlibs/libs-osx/lib/libjpeg.a;
 

//ADVANCED property for variable: FREETYPE_INCLUDE_DIR_freetype2
FREETYPE_INCLUDE_DIR_freetype2-ADVANCED:INTERNAL=1
//ADVANCED property for variable: FREETYPE_INCLUDE_DIR_ft2build
FREETYPE_INCLUDE_DIR_ft2build-ADVANCED:INTERNAL=1
//ADVANCED property for variable: FREETYPE_LIBRARY
FREETYPE_LIBRARY-ADVANCED:INTERNAL=1
 

Il n y'a pas de modification à faire dans les options de build de xcode ?
Titre: Re : Fullscreen - windows - OSX
Posté par: Hiura le Avril 19, 2016, 02:30:39 pm
Tu as bien re-généré le projet après avoir reconfiguré cmake ? Je déconseille Xcode pour la compilation de SFML, il y a toujours un truc louche avec... essaye plutôt de générer une makefile comme suggéré dans le tutoriel.
Titre: Re : Fullscreen - windows - OSX
Posté par: krockdur le Avril 19, 2016, 06:50:52 pm
Bonjour Hiura,

La compilation est ok avec un makefile. Avec xcode pas moyen.

J'ai donc tester GetDesktopMode() et ca fonctionne nikel. Je règle la vue et c'est parfait.

Je te remercie pour le coup de main  :D

Krock
Titre: Re : Fullscreen - windows - OSX
Posté par: Hiura le Avril 19, 2016, 06:52:02 pm
pas de quoi, amuse toi bien !  ;)