2014-03-26 36 views
0

我使用cairo和保存創建紋理,問題是如果我直接使用opengl垂直翻轉它的表面。如何在使用python進行保存之前翻轉cairo表面?

如果我保存並加載我可以使用pil和im.tostring()來翻轉它。

是否有翻轉cairo表面的好方法,或許可以保存我的png,然後翻轉以便使用或將圖像保存爲上下顛倒。

或者我可以創建PIL圖像並與ciaro共享緩衝區,這樣我就可以使用PIL tostring方法來定位紋理。

開放的建議,沒有太多的信息混合cairo和opengl與蟒蛇。

回答

1

一個解決方案是調整您的紋理座標,或者如果使用舊矩陣堆棧,則將紋理矩陣(1,-1)應用於紋理矩陣。

另一種方法是在着色器中反轉像素(texcoord.y = 1.0 -texcoord.y),通過FBO自己渲染到新的紋理。 (這是一個很好的選擇)

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;       
} 
+0

我沒翻過來,作爲一種選擇,似乎是一個更好的主意,這樣做,因爲我編輯的圖像,可能最終雖然使用這種方法。不知道它是否對性能翻轉有很大影響,我不斷更新紋理,因爲它們包含文本。 – Oly

相關問題