-
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.
-
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é. :-/
-
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.
-
Si tu as un patch qui tient la route à proposer, oui. ;)
-
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.
-
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)
-
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.
-
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
-
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.
-
J'ai bien la 2.3.2 prise sur le site.
-
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.
-
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.)
-
Je viens de tester. Aucun changement.
-
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);
}
-
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.
-
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 ?
-
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.
-
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).
-
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
-
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 ?
-
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.
-
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
-
pas de quoi, amuse toi bien ! ;)