是否可以像 Vertex Shader 和 Fragment Shader 一样为 Android Camera Preview 提供效果,并使用 OpenGLES 保存捕获的图像?
Posted
技术标签:
【中文标题】是否可以像 Vertex Shader 和 Fragment Shader 一样为 Android Camera Preview 提供效果,并使用 OpenGLES 保存捕获的图像?【英文标题】:Is it Possible to give effect like Vertex Shader and Fragment Shader to the Android Camera Preview , and Save the Captured image with OpenGLES? 【发布时间】:2011-12-12 11:19:19 【问题描述】:这两个是My VertexShader和Fragment Shader文件:
顶点着色器文件:
attribute vec4 position;
attribute vec4 inputTextureCoordinate;
varying vec2 textureCoordinate;
varying vec4 co;
void main()
gl_Position = position;
textureCoordinate = inputTextureCoordinate.xy;
co = inputTextureCoordinate;
片段着色器文件:
uniform sampler2D videoFrame; // the texture with the scene you want to blur
varying mediump vec2 textureCoordinate;
varying mediump vec4 co;
precision mediump float;
vec4 nightVision()
float luminanceThreshold = 0.2; // 0.2
float colorAmplification = 2.0; // 4.0
float effectCoverage = 1.0; // 1.0
vec4 finalColor;
// Set effectCoverage to 1.0 for normal use.
if (co.x < effectCoverage)
vec3 c = texture2D(videoFrame, co.st).rgb;
float lum = dot(vec3(0.30, 0.59, 0.11), c);
if (lum < luminanceThreshold)
c *= colorAmplification;
vec3 visionColor = vec3(0.1, 0.95, 0.2);
finalColor.rgb = (c) * visionColor;
else
finalColor = texture2D(videoFrame, co.st);
vec4 sum = vec4(0.0, 0.0, 0.0, 1.0);
sum.rgb = finalColor.rgb;
return sum;
void main(void)
gl_FragColor = nightVision();
现在,我想使用此代码在 android 相机预览中提供相机预览效果。并且还想保存该效果捕获的图片。
那么有可能吗??? 如果是,那么请帮助我一些代码,因为我是使用 Android 相机的 OpenGles 的新手。
【问题讨论】:
我们可以通过 onDrawframe() 方法里面的 rendererclass 来保存 GLSurfaceview 绘制的对象。只是更详细地说明您的问题..准确回答您会有所帮助。 ***.com/questions/12519235/… 【参考方案1】:是的,这绝对是可能的。有很多不同的方法来构建它,一个小的代码示例并没有太大帮助。基本思想是将您从相机获得的帧作为纹理提供给 OpenGL。
查看Camera image as an OpenGL texture on top of the native camera viewfinder。源代码应该让您知道如何继续。
【讨论】:
我已经通过谷歌搜索该项目下载了该项目。但我无法运行该项目。还有其他链接吗?或者这个项目有什么问题? 你还有其他例子吗?我已经尝试过了,但我没有得到任何我想要的正确结果。以上是关于是否可以像 Vertex Shader 和 Fragment Shader 一样为 Android Camera Preview 提供效果,并使用 OpenGLES 保存捕获的图像?的主要内容,如果未能解决你的问题,请参考以下文章
glCreateShader(GL_VERTEX_SHADER);访问冲突执行位置
Cg入门15:Vertex Shader - 几何变换 —波
Cg入门13: Vertex Shader - 几何变换 —顶点位移