как создать контекст opengl 3.x или 4.x с помощью fltk 1.3?

Я рассматриваю возможность переноса одного из моих программ с opengl 2.1 на современные версии (3.x или 4.x).

Графический интерфейс разработан с помощью fltk и включает FL_GL_Window, в котором я выполняю весь рендеринг. Теперь моя проблема в том, что я не понимаю, как указать контекст opengl для этого окна.

Если бы я использовал SDL для создания контекста OpenGL, я мог бы использовать что-то вроде: SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3); SDL_GL_SetAttribute (SDL_GL_CONTEXT_MINOR_VERSION, 2);

Есть ли что-то подобное для fltk? Или он может работать только с Opengl 2.1?


person Once    schedule 19.07.2012    source источник


Ответы (2)


Ни FLTK 1.1, ни Функции создания окон FLTX 2.0 позволяют создавать основной контекст OpenGL. Вы по-прежнему можете создать контекст совместимости версий после 2.1 (но не на MacOSX, где они предлагают только ядро OpenGL).

person Nicol Bolas    schedule 19.07.2012

Я предполагаю, что вы можете использовать WGL_ARB_create_context или wglCreateContext для создания контекста OpenGL, а после этого вы можете использовать Fl_GL_Window void context (void *, int destroy_flag=0) метод для установки контекста. Конечно, вы должны быть осторожны с творчеством. К счастью, FLTK сможет предоставить вам подробную информацию о DC, чтобы вы могли создать действительный контекст OpenGL. Кроме того, вы можете использовать метод void* context(), чтобы получить точку контекста OpenGL, используемого FLTK.

person DejanLekic    schedule 19.07.2012
comment
Итак, контекст должен быть создан вне FLTK, верно? Мне придется создать его по-разному для разных систем (Windows и Linux). - person Once; 27.07.2012
comment
Дефолтный должен быть создан для вас (по Fl_GL_window), если вы хотите что-то еще, вы должны сделать его сами, кажется. Для меня это имеет смысл (я не эксперт OpenGL)... - person DejanLekic; 27.07.2012