[Development] Qt 'minimal' platform no rendering alpha/opacity.

Paul Knopf theonlylawislove at gmail.com
Mon Apr 20 09:25:10 CEST 2015


Thanks a lot! This worked. I now have a valid alpha component that I can
send to my hard vendors API for FPGA video overlay.

With this said, I would REALLY like to support OpenGL (for Qt Quick
2/qml). Here
is an image <http://i.imgur.com/hhlcbb9.jpg> of what I am trying to
essentially do. What are your thoughts implementing this in Qt?

Here is what I need my monitor output to be.

The original buffer:   size  w         /  h         :   [R G B A][R G B
A][R G B A][...]
The output i want:    size (w*.25) / (h*.25):    [R G B][A R G][B A R][G B
A][...]

My thoughts are to Render OpenGL off screen (not using framebuffer), then
have a thread that periodically captures the output (RGBA) and sends it my
linux framebuffer. My output doesn't need high FPS. I understand that
sending the extra alpha will increase the size of my resolution by 25%..
The FPGA component/board will identify itself as having a resolution of
1350 (1080 * .25) so that it can internally translate to 1080 with an alpha
channel. Does the EGLFS support off-screen rendering? Maybe then, I could
create 1080 opengl context off-screen, and then output it, including alpha,
to the 1350 framebuffer.

Or is there a better way that I could achieve this?

I understand that I am asking a lot from you guys, but if someone has some
concrete ideas, I am open to a consultation arrangement.

Thanks,
Paul


On Sat, Apr 18, 2015 at 2:14 PM, Agocs Laszlo <laszlo.agocs at theqtcompany.com
> wrote:

>  The code snippet has no relation whatsoever to what setWindowOpacity is
> doing. If you are only after having transparent (alpha == 0) areas on the
> window, then there is no difference with 'minimal' compared to any other
> platform. In fact it's much easier since you won't need to worry about
> having transparency functional on the windowing system level. Just writing
> out pixels with an alpha of 0 is good enough, f.ex.:
>
>  tlw.setAutoFillBackground(true);
>  tlw.setBrush(QPalette::Window, Qt::transparent);
>
>  See
> http://doc.qt.io/qt-5.4/qwidget.html#transparency-and-double-buffering
>
>  Cheers,
> Laszlo
>
>   From: Paul Knopf <theonlylawislove at gmail.com>
> Date: Friday 17 April 2015 17:45
> To: Agocs Laszlo <laszlo.agocs at theqtcompany.com>
> Cc: "development at qt-project.org" <development at qt-project.org>
> Subject: Re: [Development] Qt 'minimal' platform no rendering
> alpha/opacity.
>
>   What do you mean when you say "compositor"? Are you referring to a
> window system?
>
>  Is this something that is possible to implement with the minimal
> project? What would have to change?
>
>  I have need a custom platform that encodes the ARGB (proprietary, vendor
> specific) to the linux framebuffer, but the alpha channel has to actually
> be correct.
>
>  How come I can do this without a compositor?
>
>      QImage bitmap(widget.size(), QImage::Format_ARGB32);
>
>     bitmap.fill(Qt::transparent);
>
>     QPainter painter(&bitmap);
>
>     widget.render(&painter, QPoint(), QRegion(), QWidget::DrawChildren);
>
>     bitmap.save("file.png");
>
>
>  There must be a way to achieve the same result using a platform plugin.
>
>  If all else fails, I could create my own thread loop that renders the
> QWidget with the above code and outputs it to my driver manually, instead
> of going through the platform plugins, but I would like to support the
> platform plugin so that I can then switch it out to develop locally using
> standard Qt platforms (X11, etc).
>
> On Fri, Apr 17, 2015 at 10:32 AM, Agocs Laszlo <
> laszlo.agocs at theqtcompany.com> wrote:
>
>>  You do have alpha because the minimal's backingstore uses
>> ARGB32_Premultiplied for the backing QImage.
>>
>>  What you do not have is setWindowOpacity(). You would need to implement
>> QPlatformWindow::setOpacity() for that, but that is not possible with
>> minimal since there is no compositor that could apply the opacity to the
>> window contents during the composition step.
>>
>>  Best regards,
>> Laszlo
>>
>>   From: Paul Knopf <theonlylawislove at gmail.com>
>> Date: Friday 17 April 2015 16:20
>> To: "development at qt-project.org" <development at qt-project.org>
>> Subject: [Development] Qt 'minimal' platform no rendering alpha/opacity.
>>
>>   I am testing the 'minimal' platform (mine is based off of it), and it
>> seems that is doesn't render the alpha channel (setting opacity).
>>
>>  Here is a gist <https://gist.github.com/anonymous/544e84fbcde5022a6878> of
>> my main function testing the opacity.
>>
>>  The saved images seems to have a tan background and no transparency.
>>
>>  Any ideas on how to get the alpha channel represented in the platform
>> backing store?
>>
>>  --
>> Thanks!
>>
>> ~Paul
>>
>
>
>
>  --
> Thanks!
>
> ~Paul
>



-- 
Thanks!

~Paul
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/development/attachments/20150420/90a45b99/attachment.html>


More information about the Development mailing list