0

I want to do a fisheye effect on android useing opengl 2.0,i can do it not use the opengl,but this not i want ,because this is inefficient and not support video texture. I also test the fisheye effect using Android Media Effects API,but the effect looks not good.

i also search fishshader as follows:

private static final String FISHEYE_FRAGMENT_SHADER =
    "precision mediump float;\n" +
    "uniform sampler2D u_Texture;\n" +
    "uniform vec2 vScale;\n" +
    "const float alpha = float(4.0 * 2.0 + 0.75);\n" +
    "varying vec2 v_TexCoordinate;\n" +
    "void main() {\n" +
    "  float bound2 = 0.25 * (vScale.x * vScale.x + vScale.y * vScale.y);\n" + 
    "  float bound = sqrt(bound2);\n" +
    "  float radius = 1.15 * bound;\n" +
    "  float radius2 = radius * radius;\n" +
    "  float max_radian = 0.5 * 3.14159265 - atan(alpha / bound * sqrt(radius2 - bound2));\n" + 
    "  float factor = bound / max_radian;\n" + 
    "  float m_pi_2 = 1.570963;\n" +
    "  vec2 coord = v_TexCoordinate - vec2(0.5, 0.5);\n" +
    "  float dist = length(coord * vScale);\n" +
    "  float radian = m_pi_2 - atan(alpha * sqrt(radius2 - dist * dist), dist);\n" +
    "  float scalar = radian * factor / dist;\n" +
    "  vec2 new_coord = coord * scalar + vec2(0.5, 0.5);\n" +
    "  gl_FragColor = texture2D(u_Texture, new_coord);\n" +
    "}\n";

this is i want to ,but i donot know how to use it .Can someone give me some clue.

pengwang
  • 19,536
  • 34
  • 119
  • 168

1 Answers1

0

Android OpenGL ES does (normally) support video textures. It's not strictly part of the OpenGL ES API, but you can normally import video surfaces as EGL External Images via Android SurfaceViews.

There are lots of similar questions on the web, but this SO question should provide a useful starting point:

Android. How play video on Surface(OpenGL)

Community
  • 1
  • 1
solidpixel
  • 10,688
  • 1
  • 20
  • 33