Использование GLEW для использования расширений OpenGL под Windows - PullRequest
23 голосов
/ 20 августа 2008

Я использовал расширения OpenGL в Windows болезненным способом . GLEW - более легкий путь? Как мне начать с этим?

Ответы [ 3 ]

33 голосов
/ 20 августа 2008

Да, библиотека Wrangler для расширений OpenGL (GLEW) - это безболезненный способ использования расширений OpenGL в Windows. Вот как начать:

Укажите расширение OpenGL и API расширения, которые вы хотите использовать. Расширения OpenGL перечислены в реестре расширений OpenGL .

Проверьте, поддерживает ли ваша видеокарта расширения, которые вы хотите использовать. Загрузите и установите последние версии драйверов и SDK для вашей видеокарты.

Последние версии NVIDIA OpenGL SDK поставляются с GLEW. Если вы используете это, вам не нужно выполнять некоторые из следующих шагов.

Загрузите GLEW и распакуйте его.

Добавьте путь GLEW bin в переменную среды Windows PATH . В качестве альтернативы вы также можете поместить glew32.dll в каталог, где Windows берет свои библиотеки DLL.

Добавьте путь GLEW include в список каталогов include вашего компилятора.

Добавьте путь GLEW lib в список каталогов библиотеки вашего компилятора.

Поручите вашему компилятору использовать glew32.lib во время компоновки. Если вы используете компиляторы Visual C ++, то один из способов сделать это - добавить в код следующую строку:

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

Добавьте строку #include <GL/glew.h> в свой код. Убедитесь, что это находится над включениями других заголовочных файлов GL. (Возможно, вам не нужны заголовочные файлы GL, если вы включите glew.h.)

Инициализируйте GLEW с помощью glewInit() после инициализации GLUT или GL. Если это не удается, значит, что-то не так с вашей настройкой.

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

Проверьте, доступны ли добавочные номера, которые вы хотите использовать, через GLEW. Вы делаете это путем проверки логической переменной с именем GLEW _your_extension_name , которая предоставляется GLEW.

* +1054 * Пример:
if (!GLEW_EXT_framebuffer_object)
{
    exit(1);
}

Вот и все! Теперь вы можете использовать вызовы расширения OpenGL в своем коде, как если бы они существовали естественным образом для Windows.

5 голосов
/ 20 августа 2008

Лично я бы не использовал команду выхода.

Я бы выдал исключение, чтобы вы могли очистить любую другую инициализацию в конце функции.

есть:

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
}

И я согласен с OJ - если вы хотите писать учебники для других, то это действительно неподходящее место для этого. Уже есть множество хороших мест для учебников по opengl. Попробуйте, например, .

3 голосов
/ 29 июля 2013

Я потерял некоторое время, но в конце концов мне удалось заставить работать GLEW. Я использую Windows7 (x64), Eclipse CDT и MinGW, и путь таков:

Загрузите MSYS (для MinGW) и запомните, чтобы правильно установить MinGW (переменная среды PATH установлена ​​правильно): http://sourceforge.net/projects/mingw/files/MSYS/Base/msys-core/msys-1.0.10/MSYS-1.0.10.exe/download?use_mirror=freefr&download=

После установки MSYS перейдите по адресу: http://glew.sourceforge.net/ и загрузите пакет TGZ, который предназначен для использования с системами UNIX

Затем откройте пакет (вы также можете использовать 7zip) и найдите «Makefile». Откройте его и с помощью текстового редактора (Блокнот должен нормально работать) найдите строку, содержащую «GLEW_DEST», и замените ее на что-то вроде «GLEW_DEST? = C: / MinGW»

Теперь вы готовы к работе, откройте MSYS (C: \ MinGW \ msys \ 1.0 \ msys.bat в моем случае) и в открывшейся оболочке перейдите в папку, где находится «Makefile».

Тогда напишите просто: «make install» и работа сделана (по крайней мере, для меня это сработало)

PS: я также скопировал и вставил файл glew-1.10.0-win32 \ glew-1.10.0 \ bin \ Release \ Win32 в мою папку System32, а в Eclipse CDT я добавил библиотеку "glew32" в опции компоновщика и добавил #include <GL/glew.h> до #include <GL/glut.h>

...