c++ - triangulos - triangulo en opengl
Error al inicializar GLEW. Falta la versiĆ³n GL (4)
A solicitud del usuario 3648895, estoy publicando mi respuesta fuera de los comentarios por separado.
Para aquellos que usan GLFW en lugar de SFML, debe llamar a glewInit () después de glfwMakeContextCurrent
Intenté configurar SFML 2.0 con la última versión del creador de qt, configuré SFML correctamente e importé un juego pequeño que escribí en Visual Studio. Tras la compilación, me sale esto:
Lo que intenté
- Reinstalando todo el qt SDK y qt creator IDE desde cero
- Reinstalando SFML
- reinstalando mingw
- Intenté escribir un programa simple para asegurarme de que no es mi código, el programa se compila correctamente pero cuando cierro la aplicación, obtengo errores de OpenGL, lo cual no es normal.
- Intenté publicar un hilo en los foros de SFML pero fue en vano.
- Buscar en Google los errores muestra algunos resultados, que son específicos de OpenGL y que están demasiado localizados, no se aplican a mí, no hay respuesta para que esto suceda en SFML 2.0
Detalles adicionales
Estoy ejecutando Windows XP SP3, la última versión de mingw y qt SDK y SFML
El código con el que trato de trabajar funciona sin ningún error o advertencia en Visual Studio 2010 y Code :: Blocks
- Sí, estoy seguro de que SFML está configurado en mi IDE, el código básico funciona pero muestra esos errores y el código más avanzado muestra todos los sprites y el texto como cuadros.
Yo no compilé SFML yo mismo
Mi versión de gcc es 4.6.2
Mi gcc es un DW2
No obtengo resultados, ni siquiera sé cómo remotamente acercarme a solucionar esto, ni siquiera por dónde empezar.
EDITAR No puedo mostrarle todo mi código, tiene más de 20 archivos y estoy casi en un 90% seguro de que no es mi código, lo dije arriba: Puedo ejecutar este código sin ninguna advertencia o error en cualquier IDE excepto qt creador.
Es porque no estás inicializando OpenGL. Ejemplo con el exceso de lib.
Incorrecto:
glewInit(); // ERROR MISSING GL VERSION
glutInitDisplayMode(GLUT_RGB);
Bueno:
glutInitDisplayMode(GLUT_RGB);
glewInit();
EDITAR Creo que para SFML:
sf::Window App(sf::VideoMode(400, 400, 32), "Window");
glewInit();
EDIT 2 Prueba este código.
#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;
}
Mi salida:
Start
Test 1
Missing GL version
Init window
Test 2
End
Compile con: g++ -W -Wall -Werror main.cpp -lsfml-window -lGLEW
Buena suerte ;)
Para aquellos que utilizan las funciones de Renderer de SDL2, debe ser justo después de SDL_CreateRenderer
.
Si estás usando glew con glfw, usa glfwMakeContextCurrent
( https://github.com/Cloudef/glhck/issues/15 )