Using GLEW to use OpenGL extensions under Windows
Asked Answered
H

3

24

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?

Howardhowarth answered 20/8, 2008 at 3:19 Comment(0)
H
40

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.

Howardhowarth answered 20/8, 2008 at 3:19 Comment(6)
Hello. Does this work with MinGW? I have been trying for 2 days now, but all I get are errors like: undefined reference to '_imp__glewInit@0' and undefined reference to '_imp____glewCreateShader'Fujio
Dan the Man: This solution was with Visual C++. I have no idea if this works with MingGW.Howardhowarth
AFAIK, #pragma comment(lib, "glew32.lib") only works on Visual C++. For MinGW you should add the libraries to the compiler's command line (I think it's -L).Osteitis
@DantheMan try changing order of libraries, especially in C::B where you have 'Project' and 'Target' settings and you decide which gets linked first. I don't understand it fully but I just fixed my problem this way:).Runny
Which GLEW should I get, the source or the binaries? I'm lost ... and I've noticed that one of them has an empty lib folder.Hind
Thanks. Adding glewExperimental = GL_TRUE; might help with opengl newer calls.Gravamen
H
6

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.

Heterogynous answered 20/8, 2008 at 5:8 Comment(2)
this has basically nothing to do with the questionIguana
@Iguana when this question was asked 15 years ago there wasn't a comment system so people would respond inline. This was probably such a response to Ashwin.Heterogynous
P
4

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>

Piotrowski answered 29/7, 2013 at 11:28 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.