Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: Igors от Сентябрь 29, 2012, 13:55



Название: glGetError
Отправлено: Igors от Сентябрь 29, 2012, 13:55
Добрый день

Ф-ция glGetError возвращает последнюю ошибку. Т.е. мне надо поймать вызов на котором ошибка возникает. Беда в том что код настолько велик что просто так (налепив вызовов glGetError) я это сделать не смог. "Делить отрезок пополам" тоже не выходит т.к. масса вызовов через eventLoop. Стал искать как пристроить callback чтобы выскочить на точку ошибки. Ну вроде нужно extension "GL_ARB_debug_output". Однако на обоих моих картах такого нет  :'( Карты скромные но не такие уж старые. Надыбал примерчик (http://www.google.com.ua/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&ved=0CCwQFjAB&url=http%3A%2F%2Fsites.google.com%2Fsite%2Fopengltutorialsbyaks%2Fintroduction-to-opengl-4-1---tutorial-05&ei=-dBmUM2ZC4iztAaUrIDQBQ&usg=AFQjCNGBI-JsBH9MMvKQoXqW2O_Y3s4hrQ&sig2=DjVo1A7Mw4sdSjLWbcPxNA) - проблема только под Вындоуз, меня бы устроило, но все GetProcAddress возвращают NULL  :'(

Какие есть предложения ?

Спасибо


Название: Re: glGetError
Отправлено: navrocky от Сентябрь 30, 2012, 15:52
Это расширение, судя по всему, далеко не везде поддерживается:

http://www.gamedev.ru/community/ogl/forum/?id=140096

Но с работающим расширением, говорят пользы тоже немного:
Цитировать
Сейчас установлены 260.99 - все работает. При ошибке попадает в callback. Но пользы от этого немного, как я писал уже, это происходит в потоке драйвера и нельзя узнать место где произошла ошибка и подробностей тоже.

Вообще, по хорошему, надо было написать некий макрос типа glCheck() и оборачивать все вызовы opengl.
Второй вариант не менее муторный - написать свою динамическую библиотеку-обёртку над opengl %)