我在Android API级别9.我有装入SurfaceView相机预览。我正试图在这个上画一个小插曲的面具。为了做到这一点,我正在使用GLSurfaceView。我使用下面的片段着色器的代码编写XCode中着色器制造商口罩(或者是像素着色器?),它编译成功至今:Android的OpenGL ES 2.0的暗角面膜
uniform sampler2D tex;
void main()
{
float innerAlpha = 0.0;
float outerAlpha = 1.0;
float len = 1.7;
float startAdjustment = -0.2;
float diff = 0.4;
float alphaStep = outerAlpha/len;
vec2 center = vec2(0.5, 0.5);
vec2 foc1 = vec2(diff,0.);
vec2 foc2 = vec2(-diff,0.);
float r = distance(center+foc1,gl_TexCoord[0].xy) + distance(center+foc2,gl_TexCoord[0].xy);
float alpha = r - (diff * 2.0) * alphaStep - startAdjustment;
vec4 vColor = vec4(0.,0.,0., innerAlpha + alpha);
gl_FragColor = vColor;
}
不过,我不知道如何落实到Android的代码,这。基本上我想我需要创建一个矩形,它将覆盖整个视图,并在其上应用这种代码生成的纹理。我无法弄清楚实际的代码。理想情况下,它应该在OpenGL ES 2.0中。
EDIT1:
@Tim - 我试图按照教程这里http://developer.android.com/training/graphics/opengl/draw.html 这里 http://www.learnopengles.com/android-lesson-one-getting-started/ 我基本上明白了,怎么画一个三角形。但我不明白,如何绘制矩形 - 我的意思是我真的需要绘制两个三角形,或者我可以直接定义矩形(或其他复杂的形状)? 至于纹理 - 在所有的教程我所看到的,纹理实际从图像文件加载,但我有兴趣知道,我怎么能真正那种用上面的像素着色器生成一个。
您是否尝试过以下任何教程,或者您是否有任何OpenGL体验?我认为“我如何在OpenGL中绘制”可能超出了单个问题的范围。或者如果你认为你可能会接近你能展示你的尝试吗? – Tim
*我真的需要实际绘制两个三角形或者我可以只定义矩形*是的,你需要绘制两个三角形,如果你想有一个四。这听起来像你试图做得太快。只要专注于绘制一个普通的彩色四边形,并且一旦理解了基本知识,就可以通过增量步骤添加内容。 – Tim