Создание собственного окна для GLUT? - PullRequest
2 голосов
/ 10 января 2011

Есть ли метод для создания / указания пользовательского окна для GLUT вместо использования метода glutCreateWindow? Я хотел бы изменить некоторые элементы окна, такие как удаление границы, возможно скругление углов и т. Д.

Кажется, что нет встроенных функций для установки определенного дескриптора HWND в качестве целевого окна GLUT (в Windows).

Есть идеи?
Jengerer

1 Ответ

2 голосов
/ 10 января 2011

Glut и OpenGL, на которых построен Glut, предназначены для кроссплатформенности. У каждой платформы есть свои представления о том, что делает окно. Чтобы обойти этот OpenGL, у него есть собственная концепция окон или контекстов рендеринга. Контекст рендеринга - это фрагмент памяти, в котором отображается DIB (устройство-независимое растровое изображение), который обычно не включает в себя декорации окна (границы, X, значок окна и т. Д.). Если нет платформенного расширения, о котором я не знаю, нет способа передать Glut HWND, специфичный для windows.

Возможно, вы сможете создать контекст рендеринга где-то еще, например, в своем собственном коде или в другой библиотеке. После создания может быть способ передать этот контекст или указатель на контекст в Glut. OpenGL это поддерживает, как и многие библиотеки, построенные поверх него.

Я не уверен, почему вы хотите изменить декорации окон, если ситуация позволяет, может быть проще использовать библиотеку, которая поддерживает это изначально, чем настраивать Glut в решение. Я знаю, что SDL, Ogre3d имеет ограниченные возможности для управления оформлением окон (хотя я не думаю, что они могут закруглять углы), и если вы действительно хотите работать с Glut, можно получить любую из этих библиотек, чтобы дать вам указатель в контекст визуализации OpenGL, который они используют. Я не использовал QT, но знаю, что он обеспечивает более легкий доступ к желаемому элементу управления и сможет создать для вас контекст OpenGL.

Однако, посмотрев документацию для Glut на http://www.opengl.org/documentation/specs/glut/spec3/spec3.html, он не использует слово «context». Это может означать, что если вы используете Glut, вы ограничены предоставляемыми им инструментами оформления окон. Это может означать, что вы должны либо отказаться от перенасыщения и использовать библиотеку, которая делает больше, либо согласиться на декорации окон, которые предоставляет ОС.

...