Не удалось инициализировать GLEW. Отсутствует версия GL
Я попытался настроить SFML 2.0 с последней версией создателя qt, я правильно настроил SFML, и я импортировал небольшую игру, которую я написал в visual studio. После компиляции я получаю следующее:
![enter image description here]()
Что я пробовал
- Повторная установка всего qt SDK и qt creator IDE с нуля
- Переустановка SFML
- переустановка mingw
- Я попытался написать простую программу, чтобы убедиться, что это не мой код, программа компилируется правильно, но когда я закрываю приложение, я получаю ошибки OpenGL, которые не являются нормальными
- Я пробовал размещать поток на форумах SFML, но безрезультатно.
- Ошибки в googling показывают несколько результатов, которые являются специфическими для 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 создатель.
Ответы
Ответ 1
Это потому, что вы не инициализируете OpenGL.
Пример с избытком lib.
Неправильно:
glewInit(); // ERROR MISSING GL VERSION
glutInitDisplayMode(GLUT_RGB);
Хорошо:
glutInitDisplayMode(GLUT_RGB);
glewInit();
EDIT Я думаю, для SFML:
sf::Window App(sf::VideoMode(400, 400, 32), "Window");
glewInit();
EDIT 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
Удачи;)
Ответ 2
По запросу пользователя3648895, я отправляю свой ответ за пределы комментариев отдельно.
Для тех, кто использует GLFW вместо SFML, вам нужно вызвать glewInit() после glfwMakeContextCurrent
Ответ 3
Если вы используете glew с glfw, используйте glfwMakeContextCurrent
(https://github.com/Cloudef/glhck/issues/15)
Ответ 4
Для тех, кто использует функции SDL2 Renderer, он должен быть сразу после SDL_CreateRenderer
.