A pesar de que estás en Android, he creado una aplicación para iPhone que muestra hace esto para los marcos de video entrando. Puede descargar el código para esta muestra en here. Tengo un informe sobre esta aplicación, que hace el seguimiento de objetos basado en color usando video en vivo, que puede leer here.
En esta aplicación, saco dos triángulos para generar un rectángulo, entonces la textura que el uso de las siguientes coordenadas:
static const GLfloat squareVertices[] = {
-1.0f, -1.0f,
1.0f, -1.0f,
-1.0f, 1.0f,
1.0f, 1.0f,
};
static const GLfloat textureVertices[] = {
1.0f, 1.0f,
1.0f, 0.0f,
0.0f, 1.0f,
0.0f, 0.0f,
};
pase a través del cuadro de vídeo como una textura, utilizo un programa sencillo con el siguiente vértice shader:
attribute vec4 position;
attribute vec4 inputTextureCoordinate;
varying vec2 textureCoordinate;
void main()
{
gl_Position = position;
textureCoordinate = inputTextureCoordinate.xy;
}
y la siguiente shader fragmento:
varying highp vec2 textureCoordinate;
uniform sampler2D videoFrame;
void main()
{
gl_FragColor = texture2D(videoFrame, textureCoordinate);
}
El dibujo es una simple cuestión de utilizar el programa adecuado:
glUseProgram(directDisplayProgram);
establecer la textura uniforme:
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, videoFrameTexture);
glUniform1i(uniforms[UNIFORM_VIDEOFRAME], 0);
establecer los atributos:
glVertexAttribPointer(ATTRIB_VERTEX, 2, GL_FLOAT, 0, 0, squareVertices);
glEnableVertexAttribArray(ATTRIB_VERTEX);
glVertexAttribPointer(ATTRIB_TEXTUREPOSITON, 2, GL_FLOAT, 0, 0, textureVertices);
glEnableVertexAttribArray(ATTRIB_TEXTUREPOSITON);
y luego dibujar los triángulos:
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
Recuerde que debe cambiar el índice de atributos; esto se hace en su programa de muestra, pero no en la publicación. '// Índice de atributo. enum { ATTRIB_VERTEX, ATTRIB_COLOR, ATTRIB_TEXTUREPOSITON, NUM_ATTRIBUTES }; ' – appas
¿Qué quiere decir con eso @dep? – kevlar
su aplicación necesita alguna actualización. Hay algunas funciones obsoletas y se bloqueó en ios 8. Pero me gusta :-) – Karsten