[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