0

我正在使用 cairo 创建纹理并保存,问题是如果我直接使用带有 opengl 的表面,它会垂直翻转。

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

有没有一种好方法可以将它翻转到 cairo 表面,也许保存我的 png 然后翻转以供使用或将图像倒置保存。

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

接受建议,关于将 cairo 和 opengl 与 python 混合的信息不多。

4

1 回答 1

0

一种解决方案是调整纹理坐标或在使用旧矩阵堆栈时将缩放矩阵 (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;                         
}
于 2014-03-26T14:18:13.030 回答