Bonsoir.
J'essai de coupler SFML et OpenGL pour ne pas avoir SDL dans les pattes.
J'essai donc comme tout bon noob d'afficher un triangle ...
Seulement rien ne s'affiche et je ne comprend pas pourquoi. J'ai fais des recherches sur internet mais tous ceux qui y sont parvenu ont le même code que moi ....
#include <iostream>
#include <GL/glew.h>
#include <SFML/Graphics.hpp>
#include <SFML/Config.hpp>
#include <SFML/Audio.hpp>
#include <SFML/System.hpp>
#include <SFML/Window.hpp>
#include <SFML/Network.hpp>
#include <SFML/OpenGL.hpp>
#include "gl3.h"
int main()
{
bool running = true;
float vertices[] = {-0.5, -0.5, 0.0, 0.5, 0.5, -0.5};
sf::Event event;
sf::ContextSettings settings;
sf::RenderWindow window(sf::VideoMode(900,900), "OpenGL", sf::Style::Close, sf::ContextSettings(\
32));
sf::Shader shader;
settings.majorVersion = 3;
settings.minorVersion = 3;
window.setVerticalSyncEnabled(true);
while (running)
{
window.clear();
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed ||
sf::Keyboard::isKeyPressed(sf::Keyboard::Escape))
running = false;
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Space))
{
std::cout << "Space pressed" << std::endl;
}
}
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
if (!shader.loadFromFile("vertex_shader.vert", "fragment_shader.frag"))
std::cerr << "Error Shader" << std::endl;
sf::Shader::bind(&shader);
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, vertices);
glEnableVertexAttribArray(0);
glDrawArrays(GL_TRIANGLES, 0, 3);
glDisableVertexAttribArray(0);
window.pushGLStates();
window.popGLStates();
window.display();
sf::Shader::bind(NULL);
}
return 0;
}
Merci de votre aide.