Рендеринг 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.
Эта ветка даст вам некоторую другую информацию.