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.


Messages - Ditret

Pages: [1]
1
Graphique / Re : sf::RenderTexture et Opengl ?
« le: Septembre 09, 2012, 12:45:44 pm »
y a pas de problème Laurent.
Je vais continuer a chercher un peu ( et regarder les sources de la SFML au passage pour essayer d'un peu mieux comprendre comment ca marche ).

2
Graphique / Re : sf::RenderTexture et Opengl ?
« le: Septembre 08, 2012, 02:36:30 pm »
suite du post de dessus.

je n'ais toujours pas réussi a afficher le cube dans le sf::RenderTexture, par contre si je le change par un sf::RenderWindow j’obtiens bien le cube sur une deuxième fenêtre.

Pour le sf::RenderTexture, il ne dessine pas le cube sur la fenêtre principale. je pense avoir oublier de déclarer ou configurer quelques choses ?.
 
window.draw( sf::Sprite( render.getTexture() );

une personne a une idée ?

3
Graphique / Re : sf::RenderTexture et Opengl ?
« le: Septembre 06, 2012, 12:07:55 am »
j'ai maintenant compris comment fonctionner le setActive() ( après quelques tests ^^ ), par contre ca n'affiche rien quand j'utilise le sf::RenderTexture.
je pense que le probléme vient de la fin du code ici :
window.draw( sf::Sprite(render.getTexture()) );
enfin je crois ... sinon je voie pas ou ?

le code actuel :
#include <SFML/Graphics.hpp>
#include <SFML/OpenGL.hpp>

/* desin du cube */
void cube()
{
        float size = 20.f;
        glBegin(GL_QUADS);
            glTexCoord2f(0, 0); glVertex3f(-size, -size, -size);
            glTexCoord2f(0, 1); glVertex3f(-size,  size, -size);
            glTexCoord2f(1, 1); glVertex3f( size,  size, -size);
            glTexCoord2f(1, 0); glVertex3f( size, -size, -size);

            glTexCoord2f(0, 0); glVertex3f(-size, -size, size);
            glTexCoord2f(0, 1); glVertex3f(-size,  size, size);
            glTexCoord2f(1, 1); glVertex3f( size,  size, size);
            glTexCoord2f(1, 0); glVertex3f( size, -size, size);

            glTexCoord2f(0, 0); glVertex3f(-size, -size, -size);
            glTexCoord2f(0, 1); glVertex3f(-size,  size, -size);
            glTexCoord2f(1, 1); glVertex3f(-size,  size,  size);
            glTexCoord2f(1, 0); glVertex3f(-size, -size,  size);

            glTexCoord2f(0, 0); glVertex3f(size, -size, -size);
            glTexCoord2f(0, 1); glVertex3f(size,  size, -size);
            glTexCoord2f(1, 1); glVertex3f(size,  size,  size);
            glTexCoord2f(1, 0); glVertex3f(size, -size,  size);

            glTexCoord2f(0, 1); glVertex3f(-size, -size,  size);
            glTexCoord2f(0, 0); glVertex3f(-size, -size, -size);
            glTexCoord2f(1, 0); glVertex3f( size, -size, -size);
            glTexCoord2f(1, 1); glVertex3f( size, -size,  size);

            glTexCoord2f(0, 1); glVertex3f(-size, size,  size);
            glTexCoord2f(0, 0); glVertex3f(-size, size, -size);
            glTexCoord2f(1, 0); glVertex3f( size, size, -size);
            glTexCoord2f(1, 1); glVertex3f( size, size,  size);
        glEnd();
}

/* chargement texture */
GLuint chargerTexture( const std::string &lien )
{
        GLuint texture = 0;
        sf::Image image;
        if (!image.loadFromFile( lien  ))
            return EXIT_FAILURE;
        glGenTextures(1, &texture);
        glBindTexture(GL_TEXTURE_2D, texture);
        gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGBA, image.getSize().x, image.getSize().y, GL_RGBA, GL_UNSIGNED_BYTE, image.getPixelsPtr());
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);

        return texture;
}

///////////////////////////////////////////////////////////////////////////////////////
int main()
{
    GLuint texture = 0;
    // Create the main window
    sf::RenderWindow window(sf::VideoMode(800, 600), "SFML OpenGL");

    sf::RenderTexture render;
    if (!render.create(800, 600))
        return -1;

    /* dessin sur le render */
    render.setActive(true);
    {
        // Enable Z-buffer read and write
        glEnable(GL_DEPTH_TEST);
        glDepthMask(GL_TRUE);
        glClearDepth(1.f);

        // Setup a perspective projection
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        gluPerspective(90.f, 1.f, 1.f, 500.f);

        // charger texture
        texture = chargerTexture("resources/texture.jpg");
        glEnable(GL_TEXTURE_2D);
        glBindTexture(GL_TEXTURE_2D, texture);
        glColor4f(1.f, 1.f, 1.f, 1.f);
    }

    // boucle principale
    while (window.isOpen())
    {
        // Process events
        sf::Event event;
        while (window.pollEvent(event))
        {
            // Close window : exit
            if (event.type == sf::Event::Closed)
                window.close();
        }

        /* dessin sur le render */
        render.setActive(true);
        {
            // Clear the depth buffer
            glClear(GL_DEPTH_BUFFER_BIT);

            // Apply some transformations
            glMatrixMode(GL_MODELVIEW);
            glLoadIdentity();

            /* position du cube */
            glTranslated(0,0,-60);
            glRotated(45,1,1,0);

            /* dessin du cube */
            cube();
        }

        // rendu
        render.display();
        window.draw( sf::Sprite(render.getTexture()) );
        window.display();
    }

    // Don't forget to destroy our texture
    glDeleteTextures(1, &texture);

    return EXIT_SUCCESS;
}
 

4
Graphique / Re : sf::RenderTexture et Opengl ?
« le: Septembre 05, 2012, 10:43:18 pm »
ca marche pas mieux ><, je ne sais pas trop ou les placer les setActive(true) ?

         ...
        /* desin du cube */
        render.setActive(true);
        glBegin(GL_QUADS);

            glTexCoord2f(0, 0); glVertex3f(-size, -size, -size);
            glTexCoord2f(0, 1); glVertex3f(-size,  size, -size);
            glTexCoord2f(1, 1); glVertex3f( size,  size, -size);
            glTexCoord2f(1, 0); glVertex3f( size, -size, -size);

            glTexCoord2f(0, 0); glVertex3f(-size, -size, size);
            glTexCoord2f(0, 1); glVertex3f(-size,  size, size);
            glTexCoord2f(1, 1); glVertex3f( size,  size, size);
            glTexCoord2f(1, 0); glVertex3f( size, -size, size);

            glTexCoord2f(0, 0); glVertex3f(-size, -size, -size);
            glTexCoord2f(0, 1); glVertex3f(-size,  size, -size);
            glTexCoord2f(1, 1); glVertex3f(-size,  size,  size);
            glTexCoord2f(1, 0); glVertex3f(-size, -size,  size);

            glTexCoord2f(0, 0); glVertex3f(size, -size, -size);
            glTexCoord2f(0, 1); glVertex3f(size,  size, -size);
            glTexCoord2f(1, 1); glVertex3f(size,  size,  size);
            glTexCoord2f(1, 0); glVertex3f(size, -size,  size);

            glTexCoord2f(0, 1); glVertex3f(-size, -size,  size);
            glTexCoord2f(0, 0); glVertex3f(-size, -size, -size);
            glTexCoord2f(1, 0); glVertex3f( size, -size, -size);
            glTexCoord2f(1, 1); glVertex3f( size, -size,  size);

            glTexCoord2f(0, 1); glVertex3f(-size, size,  size);
            glTexCoord2f(0, 0); glVertex3f(-size, size, -size);
            glTexCoord2f(1, 0); glVertex3f( size, size, -size);
            glTexCoord2f(1, 1); glVertex3f( size, size,  size);

        glEnd();
        render.setActive(false);


        // Finally, display the rendered frame on screen
        render.display();
        window.draw( sf::Sprite(render.getTexture()) );
        window.display();
 


5
Graphique / Re : sf::RenderTexture et Opengl ?
« le: Septembre 05, 2012, 10:17:19 pm »
pour les tests, j'ai prix l'exemple du cube en bois openGL fourni dans les exemples SFML.

Le problème c'est que des que je creer un sf::RenderTexture, mon cube ne s'affiche plus, je sais pas comment lui dire de dessiner sur ce sf::RenderTexture ou un autre ... ?

si j'appel pas sf::RenderTexture::create(...) , le cube s'affiche normalement.

#include <SFML/Graphics.hpp>
#include <SFML/OpenGL.hpp>

int main()
{
    // Create the main window
    sf::RenderWindow window(sf::VideoMode(800, 600), "SFML OpenGL");
    window.setVerticalSyncEnabled(true);

    sf::RenderTexture render;
    if (!render.create(800, 600))
        return -1;

    /* texture opengl bois*/
    GLuint texture = 0;
    {
        sf::Image image;
        if (!image.loadFromFile("resources/texture.jpg"))
            return EXIT_FAILURE;
        glGenTextures(1, &texture);
        glBindTexture(GL_TEXTURE_2D, texture);
        gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGBA, image.getSize().x, image.getSize().y, GL_RGBA, GL_UNSIGNED_BYTE, image.getPixelsPtr());
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
    }

    // Enable Z-buffer read and write
    glEnable(GL_DEPTH_TEST);
    glDepthMask(GL_TRUE);
    glClearDepth(1.f);

    // Setup a perspective projection
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(90.f, 1.f, 1.f, 500.f);

    // Bind our texture
    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D, texture);
    glColor4f(1.f, 1.f, 1.f, 1.f);


    // boucle principale
    while (window.isOpen())
    {
        // Process events
        sf::Event event;
        while (window.pollEvent(event))
        {
            // Close window : exit
            if (event.type == sf::Event::Closed)
                window.close();
        }

        // Clear the depth buffer
        glClear(GL_DEPTH_BUFFER_BIT);

        // Apply some transformations
        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();

        // Draw a cube
        float size = 20.f;
        /* position du cube */
        glTranslated(0,0,-size*4);
        glRotated(45,1,1,0);
        /* desin du cube */
        glBegin(GL_QUADS);

            glTexCoord2f(0, 0); glVertex3f(-size, -size, -size);
            glTexCoord2f(0, 1); glVertex3f(-size,  size, -size);
            glTexCoord2f(1, 1); glVertex3f( size,  size, -size);
            glTexCoord2f(1, 0); glVertex3f( size, -size, -size);

            glTexCoord2f(0, 0); glVertex3f(-size, -size, size);
            glTexCoord2f(0, 1); glVertex3f(-size,  size, size);
            glTexCoord2f(1, 1); glVertex3f( size,  size, size);
            glTexCoord2f(1, 0); glVertex3f( size, -size, size);

            glTexCoord2f(0, 0); glVertex3f(-size, -size, -size);
            glTexCoord2f(0, 1); glVertex3f(-size,  size, -size);
            glTexCoord2f(1, 1); glVertex3f(-size,  size,  size);
            glTexCoord2f(1, 0); glVertex3f(-size, -size,  size);

            glTexCoord2f(0, 0); glVertex3f(size, -size, -size);
            glTexCoord2f(0, 1); glVertex3f(size,  size, -size);
            glTexCoord2f(1, 1); glVertex3f(size,  size,  size);
            glTexCoord2f(1, 0); glVertex3f(size, -size,  size);

            glTexCoord2f(0, 1); glVertex3f(-size, -size,  size);
            glTexCoord2f(0, 0); glVertex3f(-size, -size, -size);
            glTexCoord2f(1, 0); glVertex3f( size, -size, -size);
            glTexCoord2f(1, 1); glVertex3f( size, -size,  size);

            glTexCoord2f(0, 1); glVertex3f(-size, size,  size);
            glTexCoord2f(0, 0); glVertex3f(-size, size, -size);
            glTexCoord2f(1, 0); glVertex3f( size, size, -size);
            glTexCoord2f(1, 1); glVertex3f( size, size,  size);

        glEnd();

        // Finally, display the rendered frame on screen
        render.display();
        window.draw( sf::Sprite(render.getTexture()) );
        window.display();
    }

    // Don't forget to destroy our texture
    glDeleteTextures(1, &texture);

    return EXIT_SUCCESS;
}

 

6
Graphique / sf::RenderTexture et Opengl ?
« le: Septembre 05, 2012, 07:39:37 pm »
Bonjour,

Je cherche depuis quelques temps a essayé différents "trucs" en opengl et sfml.
Et je me demandé si on peut dessiner en OpenGL dans un sf::RenderTexture ?

j'ai essayé 2/3 manipulations a partir de l'exemple fourni mais j'ai l'impression que seul sf::RenderWindow peut faire un rendu OpenGL ?

7
Graphique / Re : [sfml2] Paramètre shader
« le: Juin 26, 2012, 12:16:03 pm »
Merci, ca marche =3
c'est que j'avais lut quelque part ( surement sur le fofo ) qu'il fallait mettre les paramètres avant loadFromFile.

8
Graphique / [sfml2] Paramètre shader
« le: Juin 25, 2012, 10:55:46 pm »
Bonjour,

je n'arrive pas a envoyer de paramètres a mon shader, je débute en GLSL et j'ai un peu de mal a comprendre le pourquoi mon paramètre "offset" n'est pas récupérais dans mon shader ?

   
sf::Shader shader;
shader.setParameter( "texture" , sf::Shader::CurrentTexture );
shader.setParameter("offset",0.4f); /* le 0.4 n'est pas ressue >_<*/

if( !shader.loadFromFile("fragment.glsl",sf::Shader::Fragment) )
     return 1;


sf::RenderStates r;
r.shader = &shader;

...

window.draw(arb2, r );
 

fagment.glsl:
uniform sampler2D texture;
uniform float offset;

/* SHADER EFFET NEIGE SUR ARBRE */
void main(void)
{      
        if( texture2D(texture, gl_TexCoord[0].xy )[1] < offset )
        {
                gl_FragColor = gl_Color * texture2D(texture, gl_TexCoord[0].xy );
        }
        else
        {
                gl_FragColor = gl_Color * texture2D(texture, gl_TexCoord[0].xy ) + vec4(1.0, 1.0, 1.0, 0.0 );
        }
}
 

9
Graphique / Re : [SFML2.0] sf::Sprite.resize() ?
« le: Mai 31, 2012, 10:35:51 am »
merci  :)

10
Graphique / [SFML2.0] sf::Sprite.resize() ?
« le: Mai 31, 2012, 09:13:36 am »
Bonjour,

je viens de passer en SFML2.0 mais je ne trouve plus la méthode resize() ( ou équivalent dans la doc ) de sf::Sprite ?

Pages: [1]