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 - Jean du bois

Pages: [1]
1
Graphique / OpenGL3 - problème de texturage
« le: Mai 08, 2016, 03:05:05 pm »
Bonjour à tous,  ;D
Mon tout premier post sur SFML  :-[
Je suis un tutoriel pour apprendre à manipuler Opengl3 et j'essaie d'aficher une texture sur un triangle.
Malheuresement, je me retrouve avec un triangle blanc sans  aucune raison :o
Je précise qu'aucune erreur ne s'affiche dans la console
Merci d'avance pour votre aide  ;)

#include <iostream>
#include <SFML/Graphics.hpp>
#include <GL/glew.h>
#include <glm/glm.hpp>
#include <glm/gtx/transform.hpp>
#include <glm/gtc/type_ptr.hpp>

int main()
{
    sf::ContextSettings contextSettings;
    contextSettings.majorVersion = 3; // Version OpenGL 3.3
    contextSettings.minorVersion = 3;
    sf::Window window(sf::VideoMode(800, 600), "OpenGL 3", sf::Style::Default, contextSettings);

    if(glewInit() != GLEW_OK){ // Message d'erreur si glew n'a pas été chargé
        std::cout << "Erreur initialisation GLEW";
        return EXIT_FAILURE;
    }
    glEnable(GL_TEXTURE_2D); // On active l'utilisation de texture. Si c'est pas déjà activé??

    // Définition des matrices
    glm::mat4 projection = (glm::mat4)glm::perspective(70.0, (double)800/600, 0.01, 100.0);
    glm::mat4 modelview = glm::lookAt(/*position de la camera*/glm::vec3(1),
                    /*point cible*/glm::vec3(0), /*repere vertical: Z*/glm::vec3(0,0,1));

    // Chargement du shader
    sf::Shader shader;
    if(!shader.loadFromFile("Shaders/texture.vert", "Shaders/texture.frag"))
        return EXIT_FAILURE;
    sf::Shader::bind(&shader); // On le selectionne

    // Chargement de la texture
    sf::Texture texture;
    if(!texture.loadFromFile("resources/texture.jpg"))
        return EXIT_FAILURE;
    sf::Texture::bind(&texture); // On la selectionne

    // Définition des vertices du triangle et des sommets de la texture
    float vertices[] = {-0.5,-0.5,0.0,  0.0,0.5,0.0,  0.5,-0.5,0.0};
    float coordTexture[] = {0,0, 1,0, 1,1}; // erreur par ici??

    while(window.isOpen())
    {
        // Gestion evenements
        sf::Event event;
        while(window.pollEvent(event)){
            if(event.type == sf::Event::Closed
            ||(event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Escape))
                window.close(); // On quitte
        }

        // Nettoyage de l'écran
        glClear(GL_COLOR_BUFFER_BIT);

        // On remplie puis on active le tableau Vertex Attrib 0
        glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, vertices);
        glEnableVertexAttribArray(0);

        // Même chose avec le tableau Vertex Attrib 1
        glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 0, coordTexture);
        glEnableVertexAttribArray(1);

        // On envoie les matrices au shader
        glUniformMatrix4fv(glGetUniformLocation(shader.getNativeHandle(), "modelview"), 1, GL_FALSE, glm::value_ptr(modelview));
        glUniformMatrix4fv(glGetUniformLocation(shader.getNativeHandle(), "projection"), 1, GL_FALSE, glm::value_ptr(projection));

        // On affiche le triangle
        glDrawArrays(GL_TRIANGLES, 0, 3);

        // On désactive les tableaux Vertex Attrib
        glDisableVertexAttribArray(0);
        glDisableVertexAttribArray(1);

        // Actualisation de la fenêtre
        window.display();
    }

    return EXIT_SUCCESS;
}
 

Pages: [1]
anything