Having Fun with OpenGL, Android and Hardware Decoding
OpenGL is a good technology, and playing around with it on Android can be real fun! 🙂 By streaming a video to texture it is possible to create interesting effects, like it is possible to do with Qt. With a simple shader, for instance, lightning effects can be added:
#extension GL_OES_EGL_image_external : require precision mediump float; uniform samplerExternalOES u_Texture; uniform vec3 u_LightPos; // The position of the light in eye space. varying vec2 v_TexCoordinate; // Interpolated texture coordinate per fragment. varying vec3 v_Position; // Interpolated position for this fragment. varying vec4 v_Color; varying vec3 v_Normal; // Interpolated normal. void main() { float distance = length(u_LightPos - v_Position); vec3 lightVector = normalize(u_LightPos - v_Position); float diffuse = max(dot(v_Normal, lightVector), 0.0); diffuse = diffuse*(1.0/(1.0 + (0.10*distance))); diffuse = diffuse + 0.3; gl_FragColor = v_Color*diffuse*texture2D(u_Texture, v_TexCoordinate); }
This is the result on a couple of different devices (Nexus 7 with Qualcomm Snapdragon and an Allwinner A31s chip):