GlewInit () Failed, OpenGL Application

I am trying to create an OpenGL application with glew / glfw. I downloaded the binaries, put them in the root of my folder, added the paths to the include and lib directories and said that my project requires glew32.lib, GLFW.lib and opengl32.lib.

I even copied glew32.lib to the root directory because my project could not see it.

I have to store all the dependencies in the project directory, as I will distribute this. I'm at a loss.

Now when I run my program, it does not work in glewInit ()

This is my implementation:

#include "Common.h" GameEngine::GameEngine() { InitWithSize(1024, 768); InitInput(); } void GameEngine::InitWithSize(int _width, int _height) { try { // Initialise GLFW if( !glfwInit() ) throw std::exception("Failed to initialize GLFW\n"); //glfwOpenWindowHint(GLFW_FSAA_SAMPLES, 4); glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3); glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 3); glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); // Open a window and create its OpenGL context if( !glfwOpenWindow( _width, _height, 0,0,0,0, 32,0, GLFW_WINDOW ) ) throw std::exception("Failed to initialize GLFW\n"); glfwSetWindowTitle( "Tutorial 01" ); // Initialize GLEW if (glewInit() != GLEW_OK) throw std::exception("Failed to initialize GLEW\n"); } catch ( std::system_error const& err) { fprintf(stdout, "System Error: %s", err.what()); glfwTerminate(); // Free glfw if it has been allocated // Try Again this->InitWithSize(_width, _height); } catch( std::exception const& err) { fprintf(stdout, "Exception Found: %s", err.what()); } catch ( ... ) { fprintf(stdout,"Unknown Exception Occurred\n"); } } void GameEngine::InitInput() { // Ensure we can capture the escape key being pressed below glfwEnable( GLFW_STICKY_KEYS ); } void GameEngine::StartGameLoop() { do{ // Draw nothing, see you in tutorial 2 ! // Swap buffers glfwSwapBuffers(); } // Check if the ESC key was pressed or the window was closed while( glfwGetKey( GLFW_KEY_ESC ) != GLFW_PRESS && glfwGetWindowParam( GLFW_OPENED ) ); } void GameEngine::InitTestData() { // An array of 3 vectors which represents 3 vertices static const GLfloat g_vertex_buffer_data[] = { -1.0f, -1.0f, 0.0f, 1.0f, -1.0f, 0.0f, 0.0f, 1.0f, 0.0f, }; } 

With my common heading:

 #ifndef _COMMON_H #define _COMMON_H // OpenGL Libraries #define GLEW_STATIC //#pragma comment(lib, "glew32.lib") #include <GL\glew.h> #include <GL\glfw.h> // Core Libraries #include <Windows.h> #include <stdio.h> #include <stdlib.h> #include <map> #include <string> #include <fstream> // C++ 11 Libraries #include <memory> #include <exception> #include <thread> #include <chrono> // Manager Classes #include "ThreadManager.h" #include "GameEngine.h" #include "ShaderManager.h" // Lesser Classes #include "Shader.h" #endif 
+6
source share
4 answers

If glewInit () does not return an error, 0 is returned. For some reason, the return was not well matched with GLEW_OK, but if the value is nothing but 0, an error occurs.

 if(glewInit()) { //Handle Error } 
+5
source

I know this answer comes a little late, but I don’t see you creating an OpenGL context by calling glfwMakeContextCurrent(window) . You must do this before calling glewInit()

+5
source

You are using Core OpenGL version 3.3, so you must indicate that you are using the "new" and "experimental" GLEW APIs. Add this line before calling glewInit ();

 glewExperimental=GL_TRUE; 

Here is the complete initialization code for my engine. It is intended for 4.2, but should work the same for you:

  void Engine::InitWithGLFW(){ if(!glfwInit()){ exit(EXIT_FAILURE); } glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 4); glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 2); //glfwOpenWindowHint(GLFW_OPENGL_FORWARD_COMPAT,GL_TRUE); glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_COMPAT_PROFILE); glfwOpenWindowHint(GLFW_FSAA_SAMPLES,4); glfwDisable(GLFW_AUTO_POLL_EVENTS); #ifdef DEBUG glfwOpenWindowHint(GLFW_OPENGL_DEBUG_CONTEXT, GL_TRUE); #endif if(!glfwOpenWindow(_width,_height,8, 8, 8, 8, 24, 8,GLFW_WINDOW)){ glfwTerminate(); exit(EXIT_FAILURE); } glfwSetWindowTitle("XDEngine V-1.0"); InitGlew(); } void Engine::InitGlew(){ glewExperimental=GL_TRUE; GLenum err = glewInit(); if (GLEW_OK != err) { /* Problem: glewInit failed, something is seriously wrong. */ fprintf(stderr, "Error: %s\n", glewGetErrorString(err)); } fprintf(stdout, "Status: Using GLEW %s\n", glewGetString(GLEW_VERSION)); glEnable (GL_BLEND); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_MULTISAMPLE); glEnable(GL_DEPTH_CLAMP); glEnable(GL_CULL_FACE); glCullFace(GL_BACK); glfwSetWindowSizeCallback(Reshape); } 
+3
source

I had a similar problem and finally got a solution on opengl.org . It seems that the GLEW developers have not yet fixed the problem with the main context. Although there is a fairly simple solution:

  glewExperimental=TRUE; GLenum err=glewInit(); if(err!=GLEW_OK) { //Problem: glewInit failed, something is seriously wrong. cout<<"glewInit failed, aborting."<<endl; } 

NTN

+1
source

All Articles