D glGenVertexArrays без GLEW

Я хочу полностью использовать OpenGL 3.3 в своей программе, но glGenVertexArrays segfaults без специальной инициализации. Я просмотрел исходный код GLEW, но не смог найти, что сделано для его работы.

Я попытался привязать к GLEW, но OPTLINK либо говорит, что библиотека недействительна (при компиляции с VS2012), либо символ не найден (uint glewInit() в dll MinGW, преобразованном в lib с помощью implib).

Если для того, что делает GLEW, требуется всего несколько строк (полагаю, мне не нужно 1000 строк для получения функций), я хотел бы сделать это сам, когда это слишком много, я был бы признателен за помощь в создании библиотеки, которая на самом деле D принимает.


person weltensturm    schedule 20.10.2012    source источник
comment
Я ничего не знаю о D, но у меня сложилось впечатление, что D может связываться с библиотеками C (хотя компиляция с VS может быть проблемой). Если вы хотите узнать, как загружать указатели функций OpenGL вручную, вы можете, но это будет чрезвычайно утомительно делать это вручную для сотен функций OpenGL 3.3. Вы можете просто попробовать другую библиотеку загрузки.   -  person Nicol Bolas    schedule 20.10.2012
comment
Мне нужно только одно: удержать glGenVertexArrays от сегментации. У DMD странный компоновщик, не все библиотечные файлы поддерживаются.   -  person weltensturm    schedule 20.10.2012
comment
Затем вам нужно предотвратить сегментацию glBindVertexArrays. Затем не допускайте сегментации glVertexAttribPointer. Я могу продолжить и назвать каждую функцию GL 1.2+, которую вы можете использовать, но я думаю, вы поняли мою мысль. Вам нужно загрузить функции, которые вы хотите использовать. Вы можете сделать это самостоятельно или получить библиотеку для этого.   -  person Nicol Bolas    schedule 20.10.2012
comment
Я понимаю. Я заставил его правильно связать, создав dll с VS, а затем преобразовав его с помощью implib, но он все еще segfaults. glewExperimental имеет значение true.   -  person weltensturm    schedule 20.10.2012


Ответы (1)


Это хорошее начало: http://www.opengl.org/wiki/Load_OpenGL_Functions

Перейдите по ссылкам на реестр OpenGL: http://www.opengl.org/registry/

Здесь вы можете найти полезные заголовочные файлы для вашей платформы. Я бы порекомендовал использовать GLEW или аналогичные библиотеки.

person Grimmy    schedule 20.10.2012
comment
Хорошо, спасибо. Теперь я заставил GLEW правильно связать, но, похоже, он не обновляет указатели функций, предоставленные Derelict ... мда, впереди много взлома. - person weltensturm; 21.10.2012
comment
Вы пытались установить версию OpenGL перед вызовом glewInit? (GLFW_OPENGL_VERSION_MAJOR, GLFW_OPENGL_VERSION_MINOR с использованием glfwOpenWindowHint(..)) Также попробуйте с glewExperimental = GL_TRUE - person Grimmy; 21.10.2012
comment
Я использую Derelict 3, который поддерживает OGL до 4.1, но ваш совет помог. Мне просто нужно было вызвать DerelictGL.reload(). - person weltensturm; 21.10.2012