opengl es2を勉強する。その6 画像のopacityを適用

openglで消える対象とかって、アルファを下げればよくて、

es1の時にはcolor4f(1f,1f,1f,0.1f);

みたいので、描画前に設定しておけば、アルファになったの楽勝でしょって思ってたら、いない!!

みんなしれっとして、描画方法書いてるのに、フェードインとか書いてる人もいなくて、途方にくれたのですが、

http://stackoverflow.com/questions/15693014/changing-level-of-opacity-in-opengl-es-2-0

を見て、shaderに設定をすれば良いなっていう判断だったのですが、

java→shaderってどうやればいいのかな?って思ったのですが、

uniform float Opacity;

ってした時に、

uniform sampler2D s_texture;

とuniformって一緒だなって思って、

GLES20.glUniform1i(GLES20.glGetUniformLocation (shaderProgram, "s_texture" ),1);

って、テクスチャに1番のテクスチャなって突っ込んでいたなー

と思ったので、

GLES20.glUniform1f(GLES20.glGetUniformLocation(shaderProgram, "Opacity" ), 0.8f);

ってしたら、shader内のOpacityの値も設定できましたので、

public final String fragmentShaderCode =
        "precision mediump float;" +
                "varying vec2 v_texCoord;" +
                "uniform sampler2D s_texture;" +
                "uniform float Opacity;" +
                "void main() {" +
                "gl_FragColor = texture2D( s_texture, v_texCoord );" +
                "gl_FragColor = vec4( gl_FragColor.r,gl_FragColor.g,gl_FragColor.b,gl_FragColor.a*Opacity );" +
                "}";

今まで利用していたshaderを上のように設定をしたら、アルファが聞きました!!

前後の記事

前の記事:

次の記事:

関連の記事

コメントの投稿

  • サイト内検索

新作アプリの紹介

関連サイトの紹介

アンドロイドアプリ開発TIPS
きぐるみカメラ
ふらいぱん
アンドロイドのデザイン集
Page top↑