В среде SFML отсутствуют функции OpenGL - PullRequest
0 голосов
/ 21 января 2019

После этого урока Я пытался управлять своими буферами OpenGL для контекста OpenGL, который я создал с помощью SFML, в среде Visual Studio. Я установил SFML и Glew в их последних версиях, сделал правильное связывание, и я могу работать с такими примитивами, как OpenGL glClear, glBegin и glVertext3d.

Однако существует множество других функций OpenGL, которые я не могу вызвать, например, glEnableVertexAttribArray или glBindBuffer, и я хотел бы понять, почему. Я заметил, что версия OpenGL по умолчанию, установленная контекстом SFML, - 4.6, но я не могу найти соответствующую документацию для этих функций на веб-сайте khronos для этой версии. Более того, моя визуальная студия даже не распознает эти функции как часть какой-либо библиотеки, но я мог бы пропустить некоторые из них, учитывая, что я полагаюсь на SFML / OpenGL.hpp. Документация на стороне SFML очень легкая на эту тему ...

Спасибо!

1 Ответ

0 голосов
/ 21 января 2019

Я могу работать с такими примитивами, как OpenGL glClear, glBegin и glVertext3d.Однако есть много других функций OpenGL, которые я не могу вызвать как glEnableVertexAttribArray или glBindBuffer, и я хотел бы понять, почему.

Причина в том, что библиотека opengl32 в Windowsобеспечивает только функциональность OpenGL 1.1, все остальное вносит драйвер вашей видеокарты.Чтобы фактически получить доступ к этим функциям, Windows предоставляет функцию для их загрузки.Однако написание всех объявлений и загрузка всех функций - большая работа (см. Загрузка функций OpenGL в OpenGL Wiki), поэтому существуют библиотеки, которые делают это за вас, одна из таких библиотек - glew, "Расширение OpenGLБиблиотека Рэнглера ".После того как вы создали свой контекст OpenGL (что делает SFML), вы должны вызвать glewInit(), который затем загружает все остальные функции.Объявления для этих функций также предоставляются glew, поэтому обязательно включите заголовок glew вместо ваших систем или SFML-заголовка opengl.

...