Android | Anaglyph 3d Video Player For
vec4 left = texture2D(uTexture, leftCoord); vec4 right = texture2D(uTexture, rightCoord);
override fun onDrawFrame(gl: GL10?) surfaceTexture.updateTexImage() GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT) GLES20.glUseProgram(program) drawQuad() anaglyph 3d video player for android
val mediaPlayer = MediaPlayer().apply setDataSource(videoPath) setSurface(Surface(renderer.getSurfaceTexture())) prepare() start() vec4 left = texture2D(uTexture, leftCoord); vec4 right =
// Assuming side-by-side: left half = left eye, right half = right eye vec2 leftCoord = vec2(vTexCoord.x * 0.5, vTexCoord.y); vec2 rightCoord = vec2(vTexCoord.x * 0.5 + 0.5, vTexCoord.y); vec4 left = texture2D(uTexture
| Format | Sampling logic in shader | |------------------|-------------------------------------------------| | Side‑by‑side | leftCoord.x = vTexCoord.x / 2 | | Over‑under | leftCoord.y = vTexCoord.y / 2 | | Full‑frame left/right | Use separate textures if available |
The renderer’s SurfaceTexture feeds frames to the shader. Add a setting in UI:
fun getSurfaceTexture(): SurfaceTexture = surfaceTexture