我在 Android API Level 9 上。我将相机预览加载到 SurfaceView 中。我正在尝试在此之上绘制一个晕影面具。为此,我使用了 GLSurfaceView。我使用以下片段着色器代码(或者它是像素着色器吗?)在 XCode 着色器构建器中准备了一个掩码,到目前为止编译成功:
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 中。
编辑1:
@Tim - 我试着按照这里的教程http://developer.android.com/training/graphics/opengl/draw.html 和这里 http://www.learnopengles.com/android-lesson-one-getting-started / 我基本明白了,怎么画一个三角形。但我不明白,如何绘制矩形 - 我的意思是我真的需要实际绘制两个三角形还是我可以立即定义矩形(或其他复杂形状)?至于纹理 - 在我见过的所有教程中,纹理实际上是从图像文件中加载的,但我很想知道,我如何才能真正使用上面的像素着色器生成一个。