Как использовать OpenGL для библиотеки Nana C ++? - PullRequest
0 голосов
/ 26 мая 2018

Я играю в нана-библиотеке для графического интерфейса.

Я также должен использовать opengl, но есть один пример для opengl, который для окон. Ссылка

Я использую Ubuntu Linux.приведенный выше пример вызова reinterpret_cast<HWND> (fm.native_handle());

Я наконец-то нашел его.

Корневое окно присоединяется к собственному окну системы OS / Windowing, native_handle возвращает дескриптор собственного окна,В определенной системе native_window_type может быть преобразован в системный дескриптор собственного типа.

auto reinterpret_cast<HWND>(root_widget.native_handle()); //Windows
auto reinterpret_cast<Window>(root_widget.native_handle()); //Linux/X11

Я могу получить подсказку между HWND , Window.

Если я использую Window (X11) , могу ли я реализовать opengl в nana библиотеке?

1 Ответ

0 голосов
/ 26 мая 2018

Для создания приложения, использующего OpenGL, вам нужно, очень очень упрощенно, как минимум четыре вещи:

  • Формат пикселей, описывающий размер цвета, размер Z-буфера, мультисэмплинг и т. Д.Windows вам нужно wglChoosePixelFormatARB.В Linux glXChooseFBConfig.
  • Контекст.В Windows wglCreateContextAttribsARB требуется HDC, а в Linux glXCreateContextAttribsARB a Display, что не совпадает с окном.
  • Как установить текущий контекст.
  • Как «поменять буферы».

Вы можете узнать больше здесь и здесь .
Если вы найдете документацию по этим вопросам для OpenGL версии <3.2, пожалуйста, не используйте ее.Придерживайтесь «современного» OpenGL. </p>

Проблема с nana заключается в том, что приведенный вами пример, похоже, хорошо работает для Windows (но старого OGL).О Linux ничего не сказано.Я думаю, вы должны покопаться в исходном коде nana в поисках того, что он возвращает на native_handle().Лучше вы предпочитаете спрашивать на его форуме.

Вышеуказанные функции не доступны напрямую, вы должны запросить их указатели функций.
И многие из современных функций OGL также требуют извлечения указателей на их функции.См вики

...