[SailfishDevel] OpenGL Under Selica QML
Wim de Vries
wsvries at xs4all.nl
Fri Jan 24 15:56:08 UTC 2014
Hi David,
The example that I use is also QQuickItem derived.
Indeed I'll take your method for placement and resizing.
Also necessary for landscape/portrait changes.
thanks.
r
wim
On 01/23/2014 10:38 AM, David Greaves wrote:
> On 23/01/14 09:28, Wim de Vries wrote:
>> On 01/22/2014 05:34 PM, David Greaves wrote:
>>> Fantastic - I just verified that it works here too.
>>>
>>> How are you getting the GL into the QML scene?
>> From one of the GL examples (Squircle in c++):
>> glViewport() determining the position (not yet QML) in Page.
>>
>> main c++:
>> qmlRegisterType<Squircle>("OpenGLUnderQML", 1, 0, "Squircle");
>>
>> QML:
>> import OpenGLUnderQML 1.0
>> Squircle {
>> SequentialAnimation on t {
>> NumberAnimation { to: 1; duration: 2500; easing.type: Easing.InQuad }
>> NumberAnimation { to: 0; duration: 2500; easing.type: Easing.OutQuad }
>> loops: Animation.Infinite
>> running: true
>> }
> Yep - I started there too :)
>
>>> I created a GLItem which allows property connections and sizing so I know where
>>> to draw in the window. I then inherit from this item and render into the
>>> viewport it sets up.
>> I will have a look at to.
> This is how I map the viewport to the Item location:
>
> class GLItem : public QQuickItem, protected QOpenGLFunctions
> ...
> void GLItem::paint()
> {
> if (!m_program) {
> m_program = new QOpenGLShaderProgram();
> connect(window()->openglContext(), SIGNAL(aboutToBeDestroyed()),
> this, SLOT(cleanup()), Qt::DirectConnection);
> initializeOpenGLFunctions();
> this->prep(); // Do any one-off setup that needs the glcontext to be
> setup (eg the shader loading)
> }
> QRectF vpr = mapRectToScene(QRectF(0.0,0.0,width(),height()));
> glViewport( vpr.x(), (window()->height() -( vpr.y() + vpr.height())),
> vpr.width(), vpr.height());
>
> ...
>
> David
>
>
More information about the Devel
mailing list