Bonjour à tous !
Je pose cette question en espérant que quelqu’un a déjà eu ce problème, dessiner avec SFML en 2D marche très bien SAUF quand je rajoute des éléments dessinés à l'aide de Vertex array (je n'utilise pas les structures de la SFML pour cela).
Quelqu'un aurait-il une super commande pour ça ?
Je n'ai d'ailleurs même pas besoin de dessiner mes vertex arrays pour ne pas avoir la 2D si je crée un buffer / shader rien ne va plus pour la SFML 2D. Si je commente la création de VBOs (tous les buffer liés à OpenGL) les objets 2D s'affichent très bien, il ne s'agit donc pas des shaders
Voilà le code que j'utilise même en commentant la partie qui dessine les VBOs ça ne marche pas (il faut commenter l'initialisation des buffers pour dessiner la 2D)
window = new sf::RenderWindow(sf::VideoMode(1024,768),"mdr",sf::Style::Close);
glewExperimental = GL_TRUE;
glewInit();
if(this->window == 0)
{
std::cout << "Erreur lors de la creation de la fenetre : " << std::endl;
return false;
}
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LESS);
glEnable(GL_CULL_FACE);
rectangle.setSize(sf::Vector2f(500, 50));
rectangle.setOutlineColor(sf::Color::Red);
rectangle.setOutlineThickness(5);
rectangle.setPosition(10, 20);
font.loadFromFile("./Freshman.ttf");
text.setFont(font);
text.setString("");
text.setCharacterSize(13);
text.setColor(sf::Color::Black);
text.setStyle(sf::Text::Bold | sf::Text::Underlined);
text.setPosition(15, 25);
glGenVertexArrays(1, &vao);
glBindVertexArray(vao);
// Create a Vertex Buffer Object and copy the vertex data to it
glGenBuffers(1, &position_array_buffer);
glBindBuffer(GL_ARRAY_BUFFER, position_array_buffer);
glBufferData(GL_ARRAY_BUFFER, vertices.size() * sizeof(glm::vec3), &vertices[0], GL_STATIC_DRAW);
// Create an element array
glGenBuffers(1, &elements_array_buffer);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, elements_array_buffer);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, indices.size()*sizeof(GLuint), &indices[0], GL_STATIC_DRAW);
glGenBuffers(1, &normal_array_buffer);
glBindBuffer(GL_ARRAY_BUFFER, normal_array_buffer);
glBufferData(GL_ARRAY_BUFFER, this->normals.size() * sizeof(glm::vec3), &this->normals[0], GL_STATIC_DRAW);
while(1) {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
window->pushGLStates();
window->draw(rectangle);
window->draw(text);
window->popGLStates();
window->display();
}
Merci !