【问题标题】:32bit XImage, XPutImage and alpha blending32 位 XImage、XPutImage 和 alpha 混合
【发布时间】:2014-12-18 17:00:30
【问题描述】:

设置

使用 XLib,我正在创建每像素 32 位的窗口和 32 bpp XImage 对象。

首先我在窗口上绘制不透明的矩形以擦除背景。

然后我尝试在窗口上绘制创建的半透明XImage。

在这些操作中,我只能使用图形上下文的 GXCopy 函数,因为所有其他函数在 alpha 通道中表现不佳。

但是,绘制 XImage 时,它​​并没有与背景混合,而是以这种方式简单地替换它(GXCopy),在窗口中创建透明孔。

问题

有没有办法让 X 服务器正确混合半透明图像? (也许是一些名为 GXBlend 的函数?)

附:我知道 XRender 扩展,但如果可能,我更喜欢使用 XLib。

【问题讨论】:

    标签: linux xlib


    【解决方案1】:

    不,这就是引入 XRender 的原因。另一种选择是 GLX。另一种选择(慢):将以前的内容传输到客户端,混合您的客户端代码并将像素图放回服务器。

    【讨论】:

    • 嗯,但我不需要透明窗口,我只需要窗口上的透明图像。然后我可以在客户端绘制整个窗口内容,而只有 XPutImage 到服务器。你认为这也会很慢吗?
    • 您询问了服务器端合成,答案是“不使用 core x11”。是的,您可以在客户端和 XPutImage 结果中进行操作
    • 确实,我询问了服务器端合成。 cmets 只是 cmets... ;)
    猜你喜欢
    • 2010-09-07
    • 1970-01-01
    • 2011-05-22
    • 2013-01-11
    • 2010-09-16
    • 2010-09-06
    • 2013-10-23
    • 1970-01-01
    相关资源
    最近更新 更多