Использование GLEW для использования расширений OpenGL под Windows

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

20.08.2008 03:19:34
3 ОТВЕТА
РЕШЕНИЕ

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

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

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

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

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

Добавьте GLEW бен путь к ОС Windows PATH переменной окружения. Кроме того, вы также можете поместить glew32.dll в каталог, где Windows берет свои библиотеки DLL.

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

Добавьте 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.

Пример:

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

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

34
20.08.2008 03:19:50
Привет. Это работает с MinGW? Я пытался в течение 2 дней, но все, что я получаю, это ошибки, как: undefined reference to '_imp__glewInit@0'иundefined reference to '_imp____glewCreateShader'
Daniel says Reinstate Monica 16.08.2012 22:10:39
Дэн Человек: это решение было с Visual C ++. Я понятия не имею, работает ли это с MingGW.
Ashwin Nanjappa 18.08.2012 02:37:23
AFAIK, #pragma comment(lib, "glew32.lib")работает только на Visual C ++. Для MinGW вы должны добавить библиотеки в командную строку компилятора (я так думаю -L).
Thiago Negri 15.01.2013 10:02:27
@DantheMan попробуйте изменить порядок библиотек, особенно в C :: B, где у вас есть настройки «Project» и «Target», и вы решаете, какие из них будут связаны первыми. Я не понимаю это полностью, но я только что решил свою проблему таким образом :).
kolenda 18.03.2013 22:37:43
Какой GLEW я должен получить, источник или двоичные файлы? Я заблудился ... и заметил, что у одного из них есть пустая папка lib.
Andrei 4.05.2014 08:57:23

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

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

то есть:

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. Попробуйте это, например .

6
20.08.2008 05:08:59

Я потерял некоторое время, но, наконец, мне удалось заставить работать 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 / скачать? use_mirror = freefr & скачать =

После установки 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>

4
29.07.2013 11:28:22