4

我正在开发一个幻灯片应用程序,并使用 SDL 1.2 使用自定义 dispmanx 后端 ( https://github.com/vanfanel/SDL12-kms-dispmanx ) 和 Pygame 在 omxplayer 之上创建覆盖。

这一切都运行良好并且分层正确,但我似乎无法在 dispmanx 中制作透明画布而不使我的对象也透明。我的理解是 Pygame 本身无法处理这个问题,由 SDL 来处理 dispmanx 层之间的透明度。

我的目标是一个硬件加速的透明画布,它的大小与我可以在 omxplayer 上方的屏幕大小相同。

我怀疑除了使用 vc_dispmanx_element_add 中的 alpha 设置之外,必须有其他方法来执行此操作?XBMC 使用 dispmanx 并且可以在 omxplayer 之上做不透明的覆盖,所以这一定是可能的。我还查看了 vc_dispmanx_display_set_background,但这似乎只需要 RGB 而不是 alpha。

4

1 回答 1

0

与其创建一个透明窗口,不如对窗口进行截图并将其用作背景。为此,我使用 pyscreenshot 拍摄图像(尽管还有其他选项)和

os.environ['SDL_VIDEO_WINDOW_POS']="0,0"

为了确保窗口每次都在正确的位置,唯一的弱点是如果窗口后面发生变化,窗口将不再透明

于 2013-07-11T03:39:49.863 回答