Я использую расширения OpenGL в Windows болезненный путь. Является ли GLEW более простым способом? Как мне начать с него?
Использование GLEW для использования расширений OpenGL под Windows
Ответ 1
Да, OpenGL Extension Wrangler Library (GLEW) - это безболезненный способ использования OpenGL-расширений в Windows. Вот как начать с него:
Определите расширение OpenGL и API расширения, которые вы хотите использовать. Расширения OpenGL перечислены в OpenGL Extension Registry.
Проверьте, поддерживает ли ваша графическая карта расширения, которые вы хотите использовать. Загрузите и установите последние версии драйверов и SDK для вашей видеокарты.
Последние версии NVIDIA OpenGL SDK поставляются с GLEW. Если вы используете это, вам не нужно выполнять некоторые из следующих шагов.
Загрузите GLEW и разархивируйте его.
Добавьте путь GLEW bin к переменной среды Windows PATH. Кроме того, вы можете разместить glew32.dll в каталоге, где Windows загружает свои DLL.
Добавьте путь GLEW include в список каталогов, содержащий список каталогов.
Добавьте путь GLEW lib к списку каталогов библиотеки компилятора.
Попросите ваш компилятор использовать glew32.lib во время компоновки. Если вы используете компиляторы Visual С++, то один из способов сделать это - добавить следующую строку в свой код:
#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.
Ответ 2
Лично я бы не использовал команду exit.
Я бы выбрал исключение, чтобы вы могли очистить любую другую инициализацию в конце функции.
т
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
Я потерял время, но, наконец, мне удалось заставить 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". Откройте его и с помощью текстового редактора (Notepad должен работать нормально) найдите строку, содержащую "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>