iphone - OpenGL ES 旋转纹理

标签 iphone ios opengl-es opengl-es-2.0

我有以下片段着色器:

varying highp vec2 coordinate;
precision mediump float;

uniform vec4 maskC;
uniform float threshold;
uniform sampler2D videoframe;
uniform sampler2D videosprite;
uniform vec4 mask;
uniform vec4 maskB;


uniform int recording;

vec3 normalize(vec3 color, float meanr)
{
    return color*vec3(0.75 + meanr, 1., 1. - meanr);
}

void main() {
    float d;
    float dB;
    float dC;

    float meanr;
    float meanrB;
    float meanrC;

    float minD;

    vec4 pixelColor;
    vec4 spriteColor;

    pixelColor = texture2D(videoframe, coordinate);
    spriteColor = texture2D(videosprite, coordinate);

    meanr   = (pixelColor.r + mask.r)/8.;
    meanrB  = (pixelColor.r + maskB.r)/8.;
    meanrC  = (pixelColor.r + maskC.r)/8.;

    d   = distance(normalize(pixelColor.rgb, meanr), normalize(mask.rgb, meanr));
    dB  = distance(normalize(pixelColor.rgb, meanrB), normalize(maskB.rgb, meanrB));
    dC  = distance(normalize(pixelColor.rgb, meanrC), normalize(maskC.rgb, meanrC));

    minD = min(d, dB);
    minD = min(minD, dC);

    gl_FragColor = spriteColor;
    if (minD > threshold) {
        gl_FragColor = pixelColor;
    }

}

现在,根据 recording 是 0 还是 1,我想将 uniform sampler2D videosprite 旋转 180 度(在 x 轴上反射,垂直翻转)。我该怎么做?

我找到了 glRotatef() 函数,但是如何指定我要旋转 videosprite 而不是 videoframe

最佳答案

呃,你不能只修改片段着色器中访问videosprite的方式吗?

vec2 c2;
if(recording == 0) {
    c2 = coordinate;
} else {
    c2 = vec2(coordinate.x, 1.0 - coordinate.y);
}

关于iphone - OpenGL ES 旋转纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10054857/

相关文章:

iphone - UILabel 设置透明背景颜色?

iphone - 使图像仅遵循 CGPath 的一部分

iphone - 如何跟踪旋转手势

ios - 客户端服务器 json 响应

ios - 如何将 iOS 应用列入白名单以播放我自己的受限视频

iphone - NSNumber 与 Int

ios - 使用 contentView 属性,UILabel 未显示在我的表格 View 单元格中

java - 使用 onTouch Android 绘制 OpenGL ES 2.0 线

swift - OpenGL ES 正交投影矩阵不起作用

opengl - glGetUniformLocation 对于 USED 变量返回 -1,优化该死