素人のアンドロイドアプリ開発日記

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

2015.07.08

qiitaにおいて、一連のOpenGL ES2.0の知見をまとめましたので、もしよかったらそちらもご覧ください

AndroidでOpenGL ES2.0入門

 

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を上のように設定をしたら、アルファが聞きました!!

同じカテゴリの記事を紹介します

OpenGL ES2.0を使ってアプリを作りました。opengl es2を勉強する。その10 表示用にクラスを作る。opengl es2を勉強する。その9 shaderにマトリックスを用いるopengl es2を勉強する。その8 画像の明るさを変更するopengl es2を勉強する。その7 画像をぼかすopengl es2を勉強する。その5 画像のアルファチャンネルopengl es2を勉強する。その4 shaderを使って、モノクロにするopengl es2を勉強する。その3 画像を複数描くopengl es2を勉強する。その2 画像を描くopengl es2を勉強する。その1 三角形を書いて動かす。

カテゴリー:OpenGL es2

公開中のアプリ、是非ダウンロードしてみてください

2chまとめのたね

RSSを利用してさまざまなブログの情報をキュレーションしてくれるアプリ

インストールする

ひらがな戦記

OPENGL ES2 を利用したカルタのソーシャルゲーム

インストールする