1
acros 2016-03-30 16:07:53 +08:00 via iPhone 1
没看懂你的要求...是指把摄像机看到的画面渲染到球面上? (就像一个镜面球反射出环境?)
|
2
acros 2016-03-30 16:13:35 +08:00
搜一下 cubemap 看看是不是你说的那种~
|
5
acros 2016-03-30 17:28:23 +08:00
|
6
notedit OP @acros 在 android 上面 摄像头 camera preview 是有固定的几种比例,没法改
如果我要一个方形的 camera preview 我需要自己拿到每一帧的数据 用 opengl 处理。 比如 我把 camera preview 显示成正方形需要的 shader 如下: ``` private final String vertexShaderCode = "attribute vec4 vPosition;" + "attribute vec2 inputTextureCoordinate;" + "varying vec2 textureCoordinate;" + "void main()" + "{" + "gl_Position = vPosition;" + "textureCoordinate = inputTextureCoordinate;" + "}"; private final String fragmentShaderCode = "#extension GL_OES_EGL_image_external : require\n" + "precision mediump float;" + "varying vec2 textureCoordinate;\n" + "uniform samplerExternalOES s_texture;\n" + "void main() {" + " gl_FragColor = texture2D( s_texture, textureCoordinate );\n" + "}"; ``` 我现在想把摄像头的 preview 渲染成圆形 不知道这里的 shader 怎么写 |
7
notedit OP 再通俗一点是我想把 camera preview 裁剪成圆形 显示
|
8
acros 2016-03-30 17:44:02 +08:00 1
呃··· 如果只是要裁剪成圆,直接在 Shader 里面指定一个 p = vec2(rx,ry)作为圆形, Ra 半径,当前 textureCoordinate 和 vec2(rx,ry)的距离平方和半径平方比较下不就得到结果了?
if(lengthSqure(p,inputTextureCoordinate) <= Ra * Ra){ gl_FragColor = texture2D( s_texture, textureCoordinate ) }else{ gl_FragColor = vec4(0,0,0,1); } |
10
acros 2016-03-30 18:05:09 +08:00
|