我正在制作幻灯片应用并使用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。
答案 0 :(得分:0)
您可以截取窗口并将其用作背景,而不是创建透明窗口。要做到这一点,我使用pyscreenshot拍摄图像(虽然还有其他选项)和
os.environ['SDL_VIDEO_WINDOW_POS']="0,0"
确保窗口每次都在正确的位置,唯一的缺点是如果窗口发生变化,窗口不再透明