IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SFML Discussion :

SFML - Bibliothèque multimédia multiplateforme open-source


Sujet :

SFML

  1. #61
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    #include "stdafx.h"
    ////////////////////////////////////////////////////////////
    // Headers
    ////////////////////////////////////////////////////////////
    #include <SFML/Graphics.hpp>
     
     
    ////////////////////////////////////////////////////////////
    /// Entry point of application
    ///
    /// \return Application exit code
    ///
    ////////////////////////////////////////////////////////////
    int main()
    {
        // Create main window
        sfRenderWindow App(sfVideoMode(800, 600), "SFML Fonts", false);
     
        // Create a graphical string
        sfString Hello;
        Hello.SetText("Hello !\nHow are you ?");
        Hello.SetFont("arial.ttf");
        Hello.SetColor(sfColor(0, 128, 128));
        Hello.SetLeft(100.f);
        Hello.SetTop(100.f);
        Hello.SetRotation(15.f);
        Hello.SetSize(50.f);
     
        // You can also use the constructor
        sfString Bonjour("Salut !\nComment ça va ?", "arial.ttf", 30.f);
        Bonjour.SetColor(sfColor(200, 128, 0));
        Bonjour.SetLeft(200.f);
        Bonjour.SetTop(300.f);
     
        // Fonts are actually loaded at first use, but you can force
        // loading of a specific font at a specific time, if you want
        sfString::PreloadFont("arial.ttf", 50.f);
     
        // Start game loop
        bool Running = true;
        while (Running)
        {
            // Process events
            sfEvent Event;
            while (App.GetEvent(Event))
            {
                // Close window : exit
                if (Event.Type == sfEvent::Close)
                    Running = false;
            }
     
            // Make the second string rotate
            Bonjour.Rotate(App.GetFrameTime() * 100.f);
     
            // Draw our strings
            App.Draw(Hello);
            App.Draw(Bonjour);
     
            // Finally, display rendered frame on screen
            App.Display();
        }
     
        return EXIT_SUCCESS;
    }
    Celui du tuto. Mais en fait, ce code minimal plante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    #include "stdafx.h"
    ////////////////////////////////////////////////////////////
    // Headers
    ////////////////////////////////////////////////////////////
    #include <SFML/Graphics.hpp>
    
    
    ////////////////////////////////////////////////////////////
    /// Entry point of application
    ///
    /// \return Application exit code
    ///
    ////////////////////////////////////////////////////////////
    int main()
    {
        // Create main window
        sfRenderWindow App(sfVideoMode(800, 600), "SFML Fonts", false);
    
        // Create a graphical string
        sfString Hello;
    
        // Start game loop
        bool Running = true;
        while (Running)
        {
            // Process events
            sfEvent Event;
            while (App.GetEvent(Event))
            {
                // Close window : exit
                if (Event.Type == sfEvent::Close)
                    Running = false;
            }
    
            // Finally, display rendered frame on screen
            App.Display();
        }
    
        return EXIT_SUCCESS;
    }
    sans sfString Hello, pas de soucis.

  2. #62
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    @Laurent : ce n'est pas le problème que j'ai eu ?
    Pas de raisons pourtant, vu qu'il a sfml avec le sdk, donc pas de modif depuis ... Si ?

  3. #63
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Effectivement la seule explication soit que tu aies récupéré des sources récentes via SVN. Si c'est le cas, le problème a été corrigé.

  4. #64
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Par défaut
    Bon je retéléchargerai demain le SDK... Pourtant je l'ai téléchargé hier.

  5. #65
    Membre éclairé Avatar de smatador
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 57
    Par défaut
    J'ai noté quelques oublis dans divers makefiles:

    - dans src/SFML/System/Makefile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    clean:
    	@rm -rf *.o ./Unix/*.o
    à la place de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    clean:
    	@rm -rf *.o
    - dans src/SFML/Window/Makefile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    clean:
    	@rm -rf *.o ./Unix/*.o ./glew/*.o
    à la place de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    clean:
    	@rm -rf *.o
    Mes 2 cents...

  6. #66
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Tout juste Auguste

  7. #67
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Par défaut
    Hop hop !

    Bon j'ai réussi à résoudre mon problème. En fait, lors de la création de l'objet sfString, ça plante en mode Débug, alors qu'en Release, aucun soucis... Je vais essayer de comparer en détail voir si j'ai pas une option de compilation différente en débug...

  8. #68
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Par défaut
    Un truc qui me manque beaucoup c'est de pouvoir changer à chaque boucle le titre de la fenêtre pour y pouvoir écrire le FPS (puisque chez moi sfString refuse de fonctionner en mode debug :/).

    Genre App.SetMessage (const std::string & message);

  9. #69
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Ben sfString est censé fonctionner

    Il fonctionne chez tout le monde jusqu'à présent, et chez toi en release, ce qui m'amène vraiment à croire que c'est un problème de configuration. Par exemple quelle version de la CRT utilises-tu en mode debug ?

    Est-ce que tu as tenté de recompiler et d'exécuter les samples utilisant sfString ?

  10. #70
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Par défaut
    Bon en effet j'ai recréé un projet et ça marche à présent... Par contre mon idée pour pouvoir changer le nom de la fenêtre ?

  11. #71
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    C'est un truc pas trop dur à implémenter, mais quel serait le but ? En général on s'en sert pour afficher des infos de debug, chose qui devient inutile à partir du moment où on peut afficher du texte dans la fenêtre.

  12. #72
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    Juste pour info , chez moi l'exemple de post-fx compile sans pb (j'ai un soft dans bin) mais si je le lance , rien du tout, même pas un message d'erreur.
    L'exécutable X11 quand à lui, me sort ce beau message d'erreur quand je le ferme :
    X Error of failed request: BadValue (integer parameter out of range for operation)
    Major opcode of failed request: 145 (XFree86-DRI)
    Minor opcode of failed request: 9 ()
    Value in failed request: 0x300000f
    Serial number of failed request: 107
    Current serial number in output stream: 107
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  13. #73
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Juste pour info , chez moi l'exemple de post-fx compile sans pb (j'ai un soft dans bin) mais si je le lance , rien du tout, même pas un message d'erreur.
    Ton GPU ne supporte certainement pas les shaders. Il faut que j'ajoute quelque chose d'explicite au sample dans ce cas, c'est vrai que c'est pas terrible là.

    L'exécutable X11 quand à lui, me sort ce beau message d'erreur quand je le ferme
    Oui c'est normal, je vais corriger le sample également.

  14. #74
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Par défaut
    Citation Envoyé par Laurent Gomila Voir le message
    C'est un truc pas trop dur à implémenter, mais quel serait le but ? En général on s'en sert pour afficher des infos de debug, chose qui devient inutile à partir du moment où on peut afficher du texte dans la fenêtre.
    Ben par exemple ça me permet de faire :

    "Test Fenetre - 120 FPS", et faire en sorte d'afficher directement les FPS dans la barre de fenêtrer, plutôt que sur la console (ou c'est moins pratique).

    De même, est-il possible d'écrire du texte sur une fenetre 3d ? J'ai essayé ça ne semble pas marcher. Faut-il régler une projection orthographique avant ?

  15. #75
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Ben par exemple ça me permet de faire :

    "Test Fenetre - 120 FPS", et faire en sorte d'afficher directement les FPS dans la barre de fenêtrer, plutôt que sur la console (ou c'est moins pratique).
    Je parlais de les afficher directement dans ta fenêtre avec un sfString.

    De même, est-il possible d'écrire du texte sur une fenetre 3d ? J'ai essayé ça ne semble pas marcher. Faut-il régler une projection orthographique avant ?
    Pour mixer de la 2D du module graphique (donc notamment sfString) avec de l'OpenGL, jette un oeil au sample OpenGL. Il faut notamment utiliser les fonctions sfWindow::BeginOpenGL() et sfWindow::EndOpenGL() afin de ne pas mettre le boxon dans les états internes.

  16. #76
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Par défaut
    Ca ne semble pas aussi simple :/. Voilà ce que j'ai essayé de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    while (running)
    	{
    	// On commence à dessiner notre monde
          App.BeginOpenGL();
     
    	// Initialisation des valeurs d'effacement pour les tampons de couleur et de profondeur
    	glClearDepth (1.0f);
     
    	// Activation de la lecture et de l'écriture dans le tampon de profondeur
    	glEnable (GL_DEPTH_TEST);
    	glDepthMask (GL_TRUE);
     
    	glEnable (GL_COLOR_MATERIAL);
       glEnable (GL_LIGHTING);
     
       glEnable (GL_LIGHT0);
       GLfloat LampeDiffuse [] = {1.0f, 1.0f, 1.0f};
       GLfloat LampeAmbient [] = {0.75f, 0.75f, 0.75f};
       GLfloat LampePosition [] = {6.0f, 10.0f, 5.0f, 1.0f};
     
       glLightfv (GL_LIGHT0, GL_DIFFUSE, LampeDiffuse);
       glLightfv (GL_LIGHT0, GL_SPECULAR, LampeDiffuse);
       glLightfv (GL_LIGHT0, GL_AMBIENT, LampeAmbient);
       glLightfv (GL_LIGHT0, GL_POSITION, LampePosition);
     
    	// Initialisation du viewport
    	glViewport (0, 0, 800, 600);
     
    	// Initialisation de la matrice modelview à l'identité
    	glMatrixMode (GL_MODELVIEW);
    	glLoadIdentity ();
     
    	// Mise en place d'une projection perspective
    	glMatrixMode (GL_PROJECTION);
    	glLoadIdentity ();
    	gluPerspective (60.0, 800.0 / 600.0, 0.1, 1000.0);
     
    		Update();
    		glClearColor(0.0, 0.5, 0.5, 0.0);
       glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
     
    	glMatrixMode (GL_MODELVIEW);
       glLoadIdentity ();
     
       gluLookAt (0.0f, 0.0f, 200.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f);
     
    		for (size_t i = 0 ; i != NUM_CUBES ; ++i)
    		   myCube[i]->Draw();
     
    	   for (size_t i = 0 ; i != NUM_SPHERES ; ++i)
    		   mySphere[i]->Draw();
     
          // End OpenGL rendering
          App.EndOpenGL();
     
    		sfString Text("This is a rotating cube");
          //Text.SetLeft(230.f);
          //Text.SetTop(300.f);
          Text.SetColor(sfColor(128, 0, 128));
          App.Draw(Text);
     
    		App.Display();
     
    		sfEvent appEvent;
    		while (App.GetEvent (appEvent))
    		{
    			// Fermeture de la fenêtre
    			if (appEvent.Type == sfEvent::Close)
    			{
    				running = false;
    				Delete ();
    			}
     
    			// Appuie de la touche Echap
    			if ((appEvent.Type == sfEvent::KeyPressed) && (appEvent.Key.Code == sfKey::Escape))
    			{
    				running = false;
    				Delete ();
    			}
     
    			if ((appEvent.Type == sfEvent::KeyPressed) && (appEvent.Key.Code == sfKey::Up))
    			{
    				trans += 1.0f;
    			}
    			if ((appEvent.Type == sfEvent::KeyPressed) && (appEvent.Key.Code == sfKey::Down))
    			{
    				trans -= 1.0f;
    			}
    			if ((appEvent.Type == sfEvent::KeyPressed) && (appEvent.Key.Code == sfKey::F1))
    			{
    				frustum = !frustum;
    			}
    		}
    	}
    Mais seul le texte est affiché. Je vois au tout début mes objets une fraction de seconde, puis ensuite seul le texte est affiché :/.

    Si je comprends bien, il faut, en gros, réinitialiser la matrice de projection à chaque boucle ?

  17. #77
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Si je comprends bien, il faut, en gros, réinitialiser la matrice de projection à chaque boucle ?
    Oui

  18. #78
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Par défaut
    Et pourquoi le code ci-dessus m'affiche que le texte et pas mes sphères ? D'autre part, c'est normal que dans ton extrait de code, tu n'initialises jamais le viewport ?

  19. #79
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Et pourquoi le code ci-dessus m'affiche que le texte et pas mes sphères ?
    Et bien c'était pas à cause de la matrice de projection ?

    D'autre part, c'est normal que dans ton extrait de code, tu n'initialises jamais le viewport ?
    Le viewport est toujours défini pour coller à la fenêtre, il n'y a besoin de le modifier que si tu veux un comportement différent.

    PS : pour afficher le framerate, la solution la plus simple c'est d'utiliser FRAPS

  20. #80
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Par défaut
    Et bien c'était pas à cause de la matrice de projection ?
    Non Regarde mon premier message de la page 6, enfin le code.


    PS : pour afficher le framerate, la solution la plus simple c'est d'utiliser FRAPS
    Oui... Mais bon j'aimerai bien l'afficher directement dans ma fenêtre. Et puis le problème là c'est que je n'arrive pas à afficher simultanément du texte, et mon rendu.

Discussions similaires

  1. Réponses: 0
    Dernier message: 05/05/2010, 12h33
  2. Réponses: 0
    Dernier message: 05/05/2010, 12h33
  3. Réponses: 11
    Dernier message: 02/08/2007, 15h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo