Несколько QGLWidgets с одним контекстом openGL в C ++ - PullRequest
3 голосов
/ 14 декабря 2011

Я пишу приложение, которое состоит из нескольких (16-32) графиков, которые обновляются несколько раз в секунду и рисуются с использованием openGL.До сих пор я подавлял большинство прототипов графиков с помощью GLUT.Тем не менее, я хотел бы принять полноценную основу, такую ​​как QT, и я готовлюсь написать тестовый QGLWidget.

Прежде чем начать, я хотел бы выяснить, возможно ли для нескольких QGLWidget использовать один и тот же контекст openGL?Если да, есть ли какие-то особенности, которые мне нужно отслеживать при совместном использовании контекста openGL между виджетами?

Ответы [ 2 ]

3 голосов
/ 14 декабря 2011

если возможно, чтобы несколько QGLWidget совместно использовали один контекст openGL?

Теперь на этот вопрос вообще невозможно ответить, потому что это зависит от рассматриваемой платформы: на X11 / GLX действительно возможно использовать косвенный контекст для нескольких рисованных объектов, однако контекст может быть активен только для одного нарисованного в время.

Однако:

Также возможно (и это рекомендуемый способ сделать это), чтобы несколько контекстов обменивались своими данными. В самых первых версиях OpenGL это были только списки отображения, поэтому это все еще называлось совместным использованием списков. Но в текущих версиях OpenGL это также включает текстуры, объекты Pixel Buffer и объекты Vertex Buffer. Однако объекты Frame Buffer нельзя использовать совместно, но поскольку текстуры могут использоваться в качестве вложений FBO, в этом нет ничего сложного.

QGLWidget предоставляет простой API для обмена контекстными данными между контекстами QGLWidgests.

1 голос
/ 14 декабря 2011

Да, можно поделиться контекстом opengl, используя этот конструктор .

Если так, то есть что-то конкретное, что мне нужно отслеживать при совместном использовании контекста openGLмежду виджетами?

Я не уверен, но не думаю, что есть что-то особенное, о чем нужно заботиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...