Voici mon code:Contexte de base OpenGL lorsque la compatibilité est demandée?
// Display.cpp
#include <memory>
#include <SFML/Graphics.hpp>
#include <GL/glew.h>
namespace Display
{
constexpr static int WIDTH = 1280; constexpr static int HEIGHT = 720;
std::unique_ptr<sf::RenderWindow> window;
void init() {
sf::ContextSettings settings;
settings.depthBits = 24;
settings.majorVersion = 3;
settings.minorVersion = 3; // OpenGL 3.3
settings.attributeFlags = sf::ContextSettings::Default;
window = std::make_unique<sf::RenderWindow>(sf::VideoMode(WIDTH, HEIGHT),
"Fcku",
sf::Style::Close,
settings);
glewInit();
glViewport(0, 0, WIDTH, HEIGHT);
}
void close() {
window->close();
}
void clear() {
glClearColor(0.0, 0.0, 0.0, 0.0);
glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
}
void update() {
window->display();
}
void checkForClose() {
sf::Event e;
while (window->pollEvent(e))
if (e.type == sf::Event::Closed) close();
}
bool isOpen() {
return window->isOpen();
}
} // namespace Display
int main()
{
Display::init();
while (Display::isOpen()) {
Display::clear();
Display::update();
Display::checkForClose();
}
return 0;
}
je compile les fichiers ci-dessus comme ceci:
g++ Display.cpp -Wall -O2 --std=c++14 -fexceptions -o test.o -lsfml-graphics -lsfml-audio -lsfml-network -lsfml-window -lsfml-system -lGL -lGLU -lGLEW -DGLEW_STATIC
(ont pas eu l'occasion d'écrire un makefile encore)
Cela produit un binaire nommé test
mais quand je le lance, je reçois l'avertissement suivant:
Warning: The created OpenGL context does not fully meet the settings that were requested
Requested: version = 4.1 ; depth bits = 24 ; stencil bits = 0 ; AA level = 0 ; core = false ; debug = false ; sRGB = false
Created: version = 3.3 ; depth bits = 24 ; stencil bits = 0 ; AA level = 0 ; core = true ; debug = false ; sRGB = false
Cela crée une fenêtre noire (comme prévu) mais je suspecte qu'une fois que je commencerai à utiliser les fonctions de Dessin dans SFML/Graphics.hpp
cela segfault, parce que cela s'est produit quand j'ai essayé de compiler un fichier exemple (il a imprimé la même erreur) .
Quand je crée mon sf::ContextSettings
je l'ai mis à attributeFlags
est sf::ContextSettings::Default
si je comprends bien, il devrait créer un contexte de compatibilité (depuis SFML utilise un code hérité c'est un must).
P.S. Si c'est important, je suis sur Void Linux et j'ai installé les versions les plus à jour de tout ce que j'ai utilisé ici des dépôts
Que diriez-vous de nous indiquer votre code source * actuel *? – datenwolf
Le code va * dans * la question. * Pas * derrière les liens hors site. Et il devrait être publié en tant que * texte * et être un [mcve]. –
Nous ne vous de poster le code entier, juste la partie d'initialisation obviosuly. – HolyBlackCat