Using GLEW to use OpenGL extensions under Windows

Solution 1:

Yes, the OpenGL Extension Wrangler Library (GLEW) is a painless way to use OpenGL extensions on Windows. Here's how to get started on it:

Identify the OpenGL extension and the extension APIs you wish to use. OpenGL extensions are listed in the OpenGL Extension Registry.

Check if your graphic card supports the extensions you wish to use. Download and install the latest drivers and SDKs for your graphics card.

Recent versions of NVIDIA OpenGL SDK ship with GLEW. If you're using this, then you don't need to do some of the following steps.

Download GLEW and unzip it.

Add the GLEW bin path to your Windows PATH environment variable. Alternatively, you can also place the glew32.dll in a directory where Windows picks up its DLLs.

Add the GLEW include path to your compiler's include directory list.

Add the GLEW lib path to your compiler's library directory list.

Instruct your compiler to use glew32.lib during linking. If you're using Visual C++ compilers then one way to do this is by adding the following line to your code:

#pragma comment(lib, "glew32.lib")

Add a #include <GL/glew.h> line to your code. Ensure that this is placed above the includes of other GL header files. (You may actually not need the GL header files includes if you include glew.h.)

Initialize GLEW using glewInit() after you've initialized GLUT or GL. If it fails, then something is wrong with your setup.

if (GLEW_OK != glewInit())
{
    // GLEW failed!
    exit(1);
}

Check if the extension(s) you wish to use are now available through GLEW. You do this by checking a boolean variable named GLEW_your_extension_name which is exposed by GLEW.

Example:

if (!GLEW_EXT_framebuffer_object)
{
    exit(1);
}

That's it! You can now use the OpenGL extension calls in your code just as if they existed naturally for Windows.

Solution 2:

Personally I wouldn't use an exit command.

I would throw an exception so you can clear any other initialisation up at the end of the function.

ie:

try
{
    // init opengl/directx
    // init directaudio
    // init directinput

    if (GLEW_OK != glewInit())
    {
        throw std::exception("glewInit failed");
    }
}
catch ( const std::exception& ex )
{
    // message to screen using ex.what()
    // clear up
}

And I agree with OJ - if you want to write tutorials for others, then this is really the wrong place for it. There are already a load of good places for opengl tutorials. Try this one for instance.

Solution 3:

I lost some time, but finally I managed to get GLEW working. I'm using Windows7 (x64), Eclipse CDT and MinGW, and the way is that:

Download MSYS (for MinGW) and rember to have MinGW installed correctly (PATH enviroinment variable set correctly): http://sourceforge.net/projects/mingw/files/MSYS/Base/msys-core/msys-1.0.10/MSYS-1.0.10.exe/download?use_mirror=freefr&download=

Once MSYS installed, go to: http://glew.sourceforge.net/ and download the TGZ package, which is intended to use with UNIX systems

Then open the package (you can use 7zip as well) and find the "Makefile". Open it and with a text editor (Notepad should work fine) find the row which contains "GLEW_DEST" and replace it with something like "GLEW_DEST ?= C:/MinGW"

Now you are ready to go, open MSYS (C:\MinGW\msys\1.0\msys.bat in my case) and in the shell opened, go to the folder where the "Makefile" is.

Then write a simple: "make install" and the work is done (at least for me it worked)

PS: I also copy-pasted glew-1.10.0-win32\glew-1.10.0\bin\Release\Win32 file's into my System32 folder, and in Eclipse CDT I added the library "glew32" in the linker option and added a #include <GL/glew.h> before #include <GL/glut.h>