Не удалось инициализировать GLEW. Отсутствующая версия GL

Я попытался настроить SFML 2.0 с последней версией создателя qt, правильно настроил SFML и импортировал небольшую игру, которую написал в visual studio. После компиляции я получаю это:

введите описание изображения здесь

Что я пробовал

  • Переустановка всего пакета qt SDK и среды разработки qt с нуля
  • Переустановка SFML
  • переустановка mingw
  • Я пытался написать простую программу, чтобы убедиться, что это не мой код, программа компилируется правильно, но когда я закрываю приложение, я получаю ошибки OpenGL, что не является нормальным
  • Я пытался опубликовать тему на форумах SFML, но безрезультатно.
  • Поиск ошибок в Google показывает несколько результатов, которые являются специфическими для OpenGL, и которые слишком локализованы, они не относятся ко мне, нет ответа на этот вопрос в SFML 2.0

Дополнительные детали

  • Я использую Windows XP SP3, последнюю версию mingw и qt SDK и SFML

  • Код, с которым я пытаюсь работать, работает без любые ошибки или даже предупреждения на Visual Studio 2010 а также Code :: Blocks

  • Да, я уверен, что SFML установлен в моей среде IDE, базовый код работает, но показывает эти ошибки, а более сложный код отображает все спрайты и текст в виде блоков.
  • Я не собирал SFML сам

  • Моя версия gcc 4.6.2

  • Мой GCC является DW2 один

Я не получаю результатов, я даже не знаю, как удаленно приблизиться к решению этой проблемы, даже с чего начать.

РЕДАКТИРОВАТЬ
Я не могу показать вам весь мой код, это более 20 файлов, и я почти на 90% уверен, что это не мой код, я сказал это выше: я могу запустить этот код без каких-либо предупреждений или даже ошибок в любой среде IDE, кроме Qt Creator.

21

Решение

Это потому, что вы не инициализируете OpenGL.
Пример с избытком lib.

Неправильно:

 glewInit();  // ERROR MISSING GL VERSION
glutInitDisplayMode(GLUT_RGB);

Хорошо:

 glutInitDisplayMode(GLUT_RGB);
glewInit();

РЕДАКТИРОВАТЬ Я думаю для SFML:

 sf::Window   App(sf::VideoMode(400, 400, 32), "Window");
glewInit();

РЕДАКТИРОВАТЬ 2 Протестируйте этот код.

#include <SFML/Window.hpp>
#include <iostream>
#include <GL/glew.h>

int
main(int, const char**)
{
GLenum      err;

std::cout << "Start" << std::endl;
std::cout << "Test 1" << std::endl;
if ((err = glewInit()) != GLEW_OK)
std::cout << glewGetErrorString(err) << std::endl;

std::cout << "Init window" << std::endl;
sf::Window  app(sf::VideoMode(400, 400, 32), "Windows");

std::cout << "Test 2" << std::endl;
if ((err = glewInit()) != GLEW_OK)
std::cout << glewGetErrorString(err) << std::endl;
std::cout << "End" << std::endl;
return 0;
}

Мой вывод:

Start
Test 1
Missing GL version
Init window
Test 2
End

Компилировать с: g++ -W -Wall -Werror main.cpp -lsfml-window -lGLEW

Удачи 😉

23

Другие решения

По просьбе user3648895 я публикую свой ответ отдельно от комментариев.

Для тех, кто использует GLFW вместо SFML, вам нужно вызвать glewInit () после glfwMakeContextCurrent

4

Если вы используете glew с glfw, используйте glfwMakeContextCurrent (https://github.com/Cloudef/glhck/issues/15)

2

Для тех, кто использует функции Renderer SDL2, это должно быть сразу после SDL_CreateRenderer,

1
По вопросам рекламы [email protected]