Рендеринг OpenGL в элемент QML

У меня есть файл QML, который содержит макет элементов QML, и теперь я хочу, чтобы один из этих элементов был QGLWidget. т.е. я хочу сделать для конкретного элемента QML.

Кто-нибудь знает, как это сделать?

1 ответ

Я предполагаю, что это самый простой способ предоставить QML новый пользовательский компонент, реализованный на C++. Я не мог найти ничего готового.

Вы можете создать подкласс QDeclarativeItem и реализовать свой код OpenGL в функции рисования после использования функции QPainter::beginNative(). После этого вы можете "экспортировать" ваш новый пользовательский элемент в QML таким способом. Это довольно просто и должно работать, но вам нужно настроить окно просмотра вашего QDeclarativeView, чтобы оно было QGLWidget, примерно так:

QDeclarativeView view;
// This is needed because OpenGL viewport doesn't support partial updates.
view.setViewportUpdateMode(QGraphicsView::FullViewportUpdateMode);
view.setViewport(new QGLWidget);

или вам придется использовать графическую систему opengl для всего приложения. Другой способ - использовать QML / 3D.

Эта ветка даст вам некоторую другую информацию.

Другие вопросы по тегам