не работает функция
IsExtensionSupported
подключал glext.h, бесполезно..
wtf?
возможно, нету glext.lib, но в инете его не нашел...
ты нас в гроб загонишь...... он ненужен.....
ты инициализировал расширения? если нет ту кури бамбук...
и еще.... IsExtentionSupported НЕ стандартная функция!!!
в твоем случае или ты забил на libExt.h или LibExt.cpp я так понял ты его используешь.... или код в студию.
хоть я сам недалеко (относительно) ушел.. но поиск рулит
libext.h
требует наличия
wglext.h....
кстати, как инициализировать расширения?
Есть же стандартная функция OpenGL -- проверять поддержку расширения. Зачем всякий изврат с подключением кучи лишних библиотек использовать?
Вот статья http://www.gamedev.ru/articles/?id=20100
И вообще почитайте статьи из раздела -- все доступно, понятно, к тому же на русском написано!!
Alex_MIPT
Согласен здесь ппц путаница.
И я не понимаю людей которые так злятся, когда я был менее опытным программистом и спрашивал про OpenGL.
Короче, начнем
Для того чтобы использовать новый функционал OpenGL надо:
1) поставить драйвера OpenGL к твоей видеокарте (чтобы можно было юзать новые функции)
2) Visual Studio поддерживает только OpenGL 1.2, т.е. там есть только gl.h, glu.h и opengl32.lib (который по сути импортирует функции из opengl32.dll, которая находится уже в системе Windows наравне с kernel32.dll ) В случае gl.h и opengl32.lib происходит т.н. статическая линковка
3) Система Windows умеет своим API динамически линковать, т.е импортировать функции прямо во время выполнения программы!
Делается это функцией GetProcAddress, которая возвращает указатель на функцию а принимает Handle (тоже виндовая фишка, целое число, идентификатор чего-либо в винде) dll'ки (которая подгружается к твоей программе если вначале вызвать функцию LoadLibrary) и текстовую строку с названием функции.
Винда так устроена, что к примеру вместо LoadLibrary можно вызвать любую другую функцию, подгружающую модуль к вашей программе (подозреваю что так можно даже подгрузить COM компонеты)
А вместо GetProcAddres можно вызывать любую другую функцию возвращающую указатель на ту функцию которую хотим "импортировать"
Одна из таких - wglGetProcAddress, это тоже WinAPI'шная, она принимает только текстовую строку, ей даже не надо хендл на подгружаемый модуль!
В описании написано: The wglGetProcAddress function returns the address of an OpenGL extension function for use with the current OpenGL rendering context.
4) То есть всего лишь навсего надо:
-подключить инклуд glext.h
-написать лабуду типа PFNGLBUFFERDATAPROC glBufferData; в глобальной области видимости, обычно сразу после подключения инклуда. Лабуду смотреть в glext.h Вот это PFNGLBUFFERDATAPROC - это тип указателя на функцию, аргументы и возвращаемое значение которого совпадает с функцией glBufferData в спецификации OpenGL. А у тебя glBufferData это будет указатель на функцию. Разницы нет, так как синтаксис использования абсолютно одинаковый. Единственное - это то что если например сделаешь вот так glBufferData(GL_ARRAY_BUFFER, sizeof(data), data, GL_STATIC_DRAW); а сам указатель glBufferData будет равняться какому-нибудь мусору, то вылезет какой нибудь seg fault или violation во время выполнения, поэтому до начала надо инициализировать указатель:
-инициализировать указатель glBufferData строчкой
glBufferData = (PFNGLACTIVETEXTUREARBPROC)wglGetProcAddress("glBufferDataARB");
Видишь в wglGetProcAddress передаем строчку glBufferDataARB. Просто возможно в системе искомая функция называется с окончанием ARB, как бы говоря нам, что это расширенная из OpenGL 1.5
Ты должен после этой строчки проверить указатель glBufferData, он не должен равняться нулю (nullptr)
Если нулю равняется, то либо wglGetProcAddress сфейлила, либо скорее всего функции glBufferDataARB нету в "current rendering context".
Попробуй убрать ARB
http://msdn.microsoft.com/ru-ru/library/windows/desktop/dd374386(v=vs.85).aspx - описание wglGetProcAddress
юзать можно, как только указатель после вызова wglGetProcAddress будет ненулевым
Golden Shovel Award?
Я так понимаю, вы хотите использовать мою библиотеку libExt - зайдите ко мне на сайт steps3d.narod.ru - там есть исходный код для нужных вам функций.
Или возьмите библиотеку GLEW - она поддерживает все последние расширения.
steps3d
Добрый вечер! Какие люди на форуме. Постоянно захожу на ваш сайт.
Только в последнее время перестали описывать какие-нибудь технологии визуализации, писать статьи о практическом применении чего-либо.
Больше стало копипаст новостей. Жаль.
steps3d
Ух ты! Он настоящий!
steps3d
А вот я хотел бы паапрасить компенсацию! While мои сверстники ходили по клубам и дефченкам, я просижывал вечера на вашем сайте! Теперь я знаю огл, но я стар и одинок... Немного денег на мой кошелек скрасили бы мои холодные вечера. Потрачу честно на хорошее пиво, шоб мне на плюсах все остатку жизни писать, если вру!
Zloten
Бомжевание пробовал?
Blew_zc
Рекомендуешь по своему опыту? ;)
Zloten
> Рекомендуешь по своему опыту? ;)
Возможно, смотря с какой стороны посмотреть :)
скрипт генерящий различные h+cpp под разные версии opengl 1.x-4.x
https://bitbucket.org/alfonse/glloadgen/overview
Некропост, товарищи, некропост. Топикстартер покинул венды уж года три как.
Тема в архиве.