Kotlin

Shader für die Farbinvertierung erstellen

Jetzt braucht unser Renderer einen Shader, den wir implementieren müssen

  1. Fügen Sie fragmentShaderCode zur Klasse MyRenderer hinzu:
private val fragmentShaderCode = """
    precision mediump float;
    uniform sampler2D Ytex;
    uniform sampler2D Utex;
    uniform sampler2D Vtex;
    varying vec2 vTextureCoord;

    void main() {
        float nx = vTextureCoord.x;
        float ny = vTextureCoord.y;

        float y = texture2D(Ytex, vec2(nx, ny)).r;
        float u = texture2D(Utex, vec2(nx, ny)).r - 0.5;
        float v = texture2D(Vtex, vec2(nx, ny)).r - 0.5;

        // Inverted Y color
        y = 1.0 - 1.1643 * (y - 0.0625);

        float r = y + 1.5958 * v;
        float g = y - 0.39173 * u - 0.81290 * v;
        float b = y + 2.017 * u;

        gl_FragColor = vec4(r, g, b, 1.0);
    }
""".trimIndent()
  1. Um die Videobilder zu rendern, verwendet die Renderer-Klasse OpenGL Shader. In diesem Beispiel erzeugt der Shader den Effekt der invertierten Farbe, genauer gesagt wird dies durch diese Zeile erreicht y = 1.0 - 1.1643 * (y - 0.0625); die sich innerhalb der fragmentShaderCode

  2. Die vollständige Implementierung des Renderers finden Sie in der Beispielanwendung hier