【发布时间】:2012-09-15 10:02:57
【问题描述】:
我使用的是 Android API 级别 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/ 我基本上明白了,如何画一个三角形。但我不明白,如何绘制矩形 - 我的意思是我真的需要实际绘制两个三角形还是我可以立即定义矩形(或其他复杂形状)? 至于纹理 - 在我见过的所有教程中,纹理实际上是从图像文件中加载的,但我很想知道,我怎样才能真正使用上面的像素着色器生成一个。
【问题讨论】:
-
您是否尝试过任何教程,或者您是否有任何 OpenGL 经验?我认为“我如何在 OpenGL 中绘图”可能有点超出了单个问题的范围。或者,如果您认为您可能很接近,您能否展示您的尝试?
-
我真的需要画两个三角形还是我可以只定义矩形 是的,如果你想要一个四边形,你需要画两个三角形。这听起来像你试图做太多太快。只需专注于绘制一个纯色的四边形,一旦您了解了基础知识,您就可以逐步添加内容。
标签: android opengl-es-2.0