Я пытаюсь выполнить несколько манипуляций с изображениями с использованием OpenGL ES 2.0 и отобразить вывод в подклассовый QDeclarativeItem, который затем будет использоваться в моем графическом интерфейсе QML. я прочитал ответы, найденных здесь: http://developer.qt.nokia.com/forums/viewthread/4109 и удался вытащить красный к синему цветному прямоугольнику в моей QML GUI переопределения краски() Methode из QDeclarativeItem:Render Image в подклассовый QDeclarativeItem с использованием OpenGL
void GLDeclarativeItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
painter->beginNativePainting();
glBegin(GL_QUADS);
glColor3ub(0,0,255);
glVertex2d(0, 0);
glVertex2d(0, height());
glColor3ub(255,0,0);
glVertex2d(width(), height());
glVertex2d(width(), 0);
glEnd();
painter->endNativePainting();
}
Однако то, что я пытаясь добиться, нужно нарисовать изображение, которое будет обрабатываться в моем настраиваемом QGLWidget, в качестве содержимого вышеописанного QDeclarativeItem (вместо контента с красным-синим цветом).
В моем обычае QGLWidget Я использую:
void GLWidget::paintGL()
{
glClear(GL_COLOR_BUFFER_BIT);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
}
для рисования, который работал отлично. Однако я не могу найти преобразование между чертежом внутри моего GLWidget и моего GLDeclarativeItem. Все, что я пробовал до сих пор, просто дало мне прямоугольник без какого-либо контента. Спасибо за помощь!
Спасибо, Гельмут, звучит многообещающе. Хотя я не уверен, как добавить виджет в качестве наложения на QDeclarativeView. У вас есть код, который поможет мне? Может быть довольно абстрактным, просто чтобы дать мне подсказку. Еще раз спасибо. – Markus
Привет, идея такова: полагаю, вы использовали 'QDeclarativeView * myview'. Затем выполните 'QGLWidget * myglwidget = new QGLWidget (myview)' (используя свой собственный подкласс QGLWidget) и расположите его соответствующим образом. Таким образом, 'myglwidget' является дочерним элементом' myview', но не является реальным 'QGraphicsItem'. Это вам помогает? –