Использование GLEW для использования расширений OpenGL под Windows
Вопрос
Я использую расширения OpenGL в Windows болезненный способ.Является ли GLEW более простым путем?Как мне начать с этого?
Решение
Да, тот самый Библиотека Wrangler расширений OpenGL (GLEW) - это безболезненный способ использования расширений OpenGL в Windows.Вот как с этого начать:
Определите расширение OpenGL и API-интерфейсы расширений, которые вы хотите использовать.Расширения OpenGL перечислены в Реестр расширений OpenGL.
Проверьте, поддерживает ли ваша графическая карта расширения, которые вы хотите использовать.Загрузите и установите последние версии драйверов и SDK для вашей видеокарты.
Последние версии NVIDIA OpenGL SDK отправляйте с GLEW.Если вы используете это, то вам не нужно выполнять некоторые из следующих шагов.
Скачать РАДОВАТЬСЯ и распакуйте его.
Добавьте ГЛЮ bin путь к вашим окнам ПУТЬ переменная среды.В качестве альтернативы, вы также можете разместить glew32.dll в каталоге, где Windows собирает свои библиотеки DLL.
Добавьте ГЛЮ включать в себя путь к списку каталогов include вашего компилятора.
Добавьте ГЛЮ библиотека путь к списку каталогов библиотеки вашего компилятора.
Проинструктируйте свой компилятор использовать glew32.библиотека во время связывания.Если вы используете компиляторы Visual C ++, то один из способов сделать это - добавить в свой код следующую строку:
#pragma comment(lib, "glew32.lib")
Добавить #include <GL/glew.h>
строка в вашем коде.Убедитесь, что это помещено над заголовочными файлами includes of other GL.(Возможно, вам на самом деле не нужны заголовочные файлы GL, если вы включаете glew.h
.)
Инициализируйте GLEW с помощью glewInit()
после того, как вы инициализируете GLUT или GL.Если это не удается, значит, что-то не так с вашей настройкой.
if (GLEW_OK != glewInit())
{
// GLEW failed!
exit(1);
}
Проверьте, доступны ли расширения, которые вы хотите использовать, теперь через GLEW.Вы делаете это, проверяя логическую переменную с именем РАДОВАТЬСЯ_ ваше_расширение_имя который раскрывается GLEW.
Пример:
if (!GLEW_EXT_framebuffer_object)
{
exit(1);
}
Вот и все!Теперь вы можете использовать вызовы расширений OpenGL в своем коде так же, как если бы они существовали естественным образом для Windows.
Другие советы
Лично я бы не стал использовать команду 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
}
И я согласен с О.Дж. - если вы хотите писать учебные пособия для других, то это действительно неподходящее место для этого.Уже есть множество хороших мест для руководств по opengl. Попробуйте, например, вот это.
Я потерял некоторое время, но в конце концов мне удалось заставить GLEW работать.Я использую Windows7 (x64), Eclipse CDT и MinGW, и способ таков:
Загрузите MSYS (для MinGW) и убедитесь, что MinGW установлен правильно (переменная PATH enviroinment установлена правильно).: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".
Затем напишите простой:"сделать установку", и работа выполнена (по крайней мере, у меня это сработало).
PS:Я также скопировал-вставил файлы glew-1.10.0-win32\glew-1.10.0\bin
elease \Win32 в свою папку System32, а в Eclipse CDT я добавил библиотеку "glew32" в опции компоновщика и добавил #include <GL/glew.h>
до того, как #include <GL/glut.h>