私は 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のチュートリアルに従おうとしました/ 三角形の描き方は基本的に理解しています。しかし、長方形を描く方法がわかりません。つまり、実際に2つの三角形を実際に描く必要があるのでしょうか、それとも長方形(または他の複雑な形状)をすぐに定義できますか?テクスチャに関しては、私が見たすべてのチュートリアルで、テクスチャは実際には画像ファイルからロードされていますが、上記のピクセルシェーダーを使用して実際にテクスチャを生成するにはどうすればよいか知りたいです.