Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using GLEW to use OpenGL extensions under Windows

Tags:

opengl

glew

I've been using OpenGL extensions on Windows the painful way. Is GLEW the easier way to go? How do I get started with it?

like image 323
Ashwin Nanjappa Avatar asked Aug 20 '08 03:08

Ashwin Nanjappa


People also ask

Does GLEW include OpenGL?

GLEW provides efficient run-time mechanisms for determining which OpenGL extensions are supported on the target platform. OpenGL core and extension functionality is exposed in a single header file.

Where does GLEW install?

On Unix, typing make install will attempt to install GLEW into /usr/include/GL and /usr/lib. You can customize the installation target via the GLEW_DEST environment variable if you do not have write access to these directories.


2 Answers

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.

like image 156
Ashwin Nanjappa Avatar answered Oct 02 '22 16:10

Ashwin Nanjappa


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.

like image 35
graham.reeds Avatar answered Oct 02 '22 16:10

graham.reeds