如何在使用python保存之前翻转cairo曲面?

如何在使用python保存之前翻转cairo曲面?,python,opengl,flip,texturing,Python,Opengl,Flip,Texturing,我使用cairo创建纹理并保存,问题是如果我直接使用opengl将其垂直翻转的曲面 如果我保存并加载,我可以使用pil和im.tostring()来翻转它 有没有一个好方法可以将其翻转到开罗表面,或者保存我的png,然后翻转以供使用,或者将图像倒置保存 或者,我可以创建一个PIL图像并与ciaro共享缓冲区,这样我就可以使用PIL tostring方法来确定纹理的方向 开放的建议,没有太多关于cairo和opengl与python混合的信息。一个解决方案是调整纹理坐标,或者在使用旧矩阵堆栈时对纹

我使用cairo创建纹理并保存,问题是如果我直接使用opengl将其垂直翻转的曲面

如果我保存并加载,我可以使用pil和im.tostring()来翻转它

有没有一个好方法可以将其翻转到开罗表面,或者保存我的png,然后翻转以供使用,或者将图像倒置保存

或者,我可以创建一个PIL图像并与ciaro共享缓冲区,这样我就可以使用PIL tostring方法来确定纹理的方向


开放的建议,没有太多关于cairo和opengl与python混合的信息。

一个解决方案是调整纹理坐标,或者在使用旧矩阵堆栈时对纹理矩阵应用缩放矩阵(1,-1)

另一种方法是通过FBO将着色器中的像素(texcoord.y=1.0-texcoord.y)反转为新纹理。 (这是一个很好的选择)


我确实意识到,作为一种选择,在我编辑图像时似乎是一个更好的主意,但最终可能会使用这种方法。不知道它是否对性能翻转有多大影响我不断更新纹理,因为它们包含文本。
uniform sampler2D diffuseTexture;

void main (void)  
{
    vec2 t = gl_TexCoord[0].st;
    t.y = 1.0 - t.y;
    vec4 c = texture2D(diffuseTexture, t);          
    gl_FragColor = c;                         
}