我在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