Bienvenue, Invité. Merci de vous connecter ou de vous inscrire. Avez-vous oublié d'activer ?

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Sujets - Gwindor

Pages: [1]
1
Fenêtrage / Une belle fenêtre toute blanche...
« le: Juillet 17, 2012, 10:27:37 am »
Bonjour! Je suis (encore) de retour...
J'essaie d'utiliser OpenGl dans une fenêtre SFML, mais quoi que j'essaie de dessiner, l'écran restera blanc...
Voici mon code source:

#include <GL/glew.h>
#include <SFML/Window.hpp>
#include <iostream>
#include <String>
#include "Shader.h"

using namespace std;


int main ()
{

    //Mise en place du contexte de la fenetre
    sf::ContextSettings settings;
    settings.majorVersion = 3;
    settings.minorVersion = 1;

    //Création de la fenetre
    cout << "Creation de la fenetre" << endl;
    sf::Window window(sf::VideoMode(1000, 800), "OpenGL", sf::Style::Default, settings);

     //Test de Glew
    GLenum comp;
    comp = glewInit ();
    if (comp != GLEW_OK)
    {
        cout << "L'initialistation de Glew n'a pas fonctionné: " << glewGetErrorString(comp) << endl;
        return -1;
    }
    //Dans le cas ou GLEW a été initialisé corectement: l'application peut fonctionner;
    else
    {
        cout << "Mise en route de Glew réussie" << endl;
    }

    //Préparation du loop de rendering
    bool opened = true;
    int loopId = 0;
    glClearColor (0.0f, 1.0f, 0.0f, 1.0f);

    //Loop de rendering
    while (opened)
    {
        loopId ++;
        //Gestion des évènements de la fenêtre
        sf::Event event;
        while (window.pollEvent (event))
        {
            cout << "Numero de loop: " << loopId << endl;

            if (event.type == sf::Event::Closed)
            {
                opened = false;
                cout << "Fermeture de la fenetre" << endl;
            }
        }

        glClear (GL_COLOR_BUFFER_BIT);

    }

    cout << "Fin de l'application" << endl;

}

Le code est aussi simple que possible. Initialement, il incluait des shaders, mais pour simplifier, j'ai supprimé toute fonctions de dessin.
Ma configuration: Windows 7-64bits, Code::Blocks 10.05, SFML 2.0. Et, bien que je ne pense pas que cela soit important, j'utilise la version release, liée statiquement.

En théorie, je devrais obtenir une fenêtre verte. Mais elle reste désespérement blanche... C'est indéniablement plus beau que ce que saurais jamais faire, mais ce n'est pas le but... ;D

 L'application ne bloque pas; en effet, une fois que je bouge la souris/tape une touche, j'obtiens dans une console l'id du loop (voire le code). De même, l'intégralité du loop principal est réalisé, puisque entre deux clic de souris, les id de loop ne se suivent pas (ils passent de 800 à 900, etc...). Enfin, lorsque je place la commande glClear avant le loop de l'application et après avoir définis glClearColor, rien ne change...

Il s'agirait donc d'une erreur que j'ai faite avec opengl? Il est possible que dans la version antérieure de mon code source, j'avais fais une erreur au niveau de leur utilisation (même si le compilateur n'a pas hurlé à mort...), et que dans cette version, je ne les utilise pas... Ce qui causerait cette fenêtre blanche?

Aussi, je précise bien dans mon ContextSetting que je veux obtenir une fenêtre de rendu utilisant opengl version 3.1 (c'est pour cela que j'utilise SFML 2.0) Or, en incluant les lignes de codes:

    settings = window.getSettings();
    cout << "version:" << settings.majorVersion << "." << settings.minorVersion << std::endl;
 

[...] je me rends compte que SFML utilise la version 4.1, qui est la plus haute que mon ordinateur peut supporter??? Là, je bug plus que mon ordinateur. SFML utilise donc toujours la version de Opengl la plus récente qu'elle trouve?

Enfin, dernier point que je vais souligner, lorsque j'ai compilé un codes  sous SFML 1.6 utilisant des fonctions "dépréciées" de opengl, cela tournait sans problème.

Je pense n'avoir rien oublié... sinon que je suis doué pour les bévues. >:( Je n'ai pas trouvé de cas similaire! Pour l'originalité... Quelqu'un aurait une idée de l'erreur que j'ai perpétré?  Merci pour toute réponse!

2
Bonjour! Vous l'avez surement compris, j'essaie d'utiliser la SFML à partir de Code::blocks.
Je suis le tutoriel officiel, soit http://www.sfml-dev.org/tutorials/1.6/start-cb.php
 Actuellement, à chaque fois que j'essaie de compiler le code donné par ce tutoriel, j'obtiens l'erreur: cannot find -lsfml-system.

Récapitulatif:
-la version de SFML que j'utilise est la version 1.6|C++|Linux 64 bits (je suis en effet sur UBUNTU 12.04, en version 64 bit).
-la version de Code::blocks que j'ai installée est 10.05.
- dans compiler and debugger/ Global compiler settings/search directories/Compiler, j'ai écrit: /home/legaffeur/Libraries/SFM-1.6/include, et j'ai écrit dans search directories/Linker:  /home/legaffeur/Libraries/SFML-1.6/lib. Je suis sur de ne pas avoir fait d'erreur sur cette étape.
- dans Project Build options/Debug/Linker Settings/Other Links Options, j'ai tapé: -lsfml-system-d.

Quelle erreur ai-je pu encore perpétrer? ???

Pages: [1]
anything