PyQt:使用alpha通道而不是预乘颜色通道创建QPixmap

我想创建一个QPixmap来使用QPainter进行绘制。 QPixmap应支持透明度,而不使用预乘颜色通道。 目前,我通过创建具有所需尺寸的QPixmap并使用为每个通道(包括alpha)设置为零的QColor填充它来实现此目的。
tex = QtGui.QPixmap(width, height)
c = QtGui.QColor(0)
c.setAlpha(0)
tex.fill(c)
这增加了QPixmap的透明度。但是,如果我使用QPainter绘制到QPixmap,则绘制的颜色值将乘以源的alpha值预乘。我不希望这样,因为QPixmap稍后用作QGLWidget中的纹理,并且渲染QPixmap的alpha通道(现在使用QPainter绘制的源的alpha)再次与颜色通道相乘,所以alpha乘以两次。 如果我使用格式为QtGui.QImage.Format_ARGB32的QImage代替QPixmap,那么颜色通道不会被预乘,并且alpha只应用一次。但是在渲染过程中这太慢了。我尝试使用上述格式绘制QImages,然后转换为QPixmaps,但得到相同的结果(预乘色彩通道再次乘以alpha通道)。奇趣科技的人说,   根据系统,QPixmap是   使用RGB32或a存储   预乘alpha格式。如果   图像有一个alpha通道,如果有   系统允许,首选格式是   预乘alpha。 我正在使用X(Linux)。当QPixmap具有alpha通道时,有没有办法强制QPixmap不预乘颜色通道?     
已邀请:
我最终使用QImages并通过最小化我调用的QGLWidget :: bindTextures的数量来优化我的代码。关于如何将预乘QPixmaps用作半透明纹理,我仍然没有得到满意的答案,但我对我的程序性能感到满意,并且不再检查这个线程了。     

要回复问题请先登录注册