Hi All. недавно я начал изучать GLSL, изучив теорию я приступил к практике ( на Делфи ) Но проблема в том что вызывая эти функции, при работе програмы выдается ошибка
Указатель glCreateShaderObjectARB не был инициализирован.
Забыл позвать инициализацию GLEW/GLee, или чем ты там пользуешься для получения адресов функций.
Или драйвер ARB версию не вернул, т.к. эта функция уже в ядре, и суффикс не нужен.
У меня закрадывается очучение, что товарищ вообще ни чего не инициализировал - TForm1.FormCreate - содержит вызов только одной функции и более ни чего.
а как правельно покажите плиз
Defractor
> а как правельно покажите плиз
Правильно идти в гугл.
Executor
> Правильно идти в гугл.
Только не на работу устраиваться.
Defractor
Скажу прямо - с графикой раньше дела не имели? Начните тогда с изучения OpenGL вообще
Defractor
> ну вот вроде инициализирую
А все же под дебагером посмотреть чему равно glCreateShaderObjectARB???
с OpenGL работал даже игровой движок писал, но с glsl немогу разобратся
оно вообще ниче не возвращает
Defractor
1. Сначала создаешь контекст.
2. Делаешь его активным.
3. Только после всего этого зовешь wglGetProcAddress("glCreateShaderObjectARB");
Defractor
> с OpenGL работал даже игровой движок писал, но с glsl немогу разобратся
Сорри тогда.
Ну так чего с инициализацией то? Посмотри объявление glCreateShaderObjectARB. Это скорее всего вара процедурного типа. Соответственно где-то она должна инициализироваться.
Если все-таки ты думаешь, что инициализация вызывается, но на лицо - ее нет, то могу предположить - поскольку линковка динамическая, то DLLка с glCreateShaderObjectARB либо не содержит ее, либо содержит но под другим именем, либо дллка вообще не найдена.
вот DLL OpenGL
эти процедуры я вызываю из dglOpenGL.pas
Defractor
> эти процедуры я вызываю из dglOpenGL.pas
Смотри исходники.
Заметь, что glCreateShaderObjectARB инициализируется в процедуре Read_GL_ARB_Shader_Objects. Она зовется из ReadExtensions,
а та зовется из ActivateRenderingContext, если параметр loadext был true.
Т.е. как минимум один раз ActivateRenderingContext должен быть вызван с loadext=true. Только после этого расширения будут доступны.
Тема в архиве.