opengl es2を勉強する。その4 shaderを使って、モノクロにする

今回はshaderをちょっと使ってみます。

前回までで、画像の表示ができましたが、shaderを使う事で色の変更が高速で実装できるので、一部では、ビデオ撮影とかに使う事で高速で処理ができたりします。

色を利用していたshaderは

public final String fragmentShaderCode =
        "precision mediump float;" +
                "varying vec2 v_texCoord;" +
                "uniform sampler2D s_texture;" +
                "void main() {" +
                "  gl_FragColor = texture2D( s_texture, v_texCoord );" +
                "}";

って今まで書いていましたが、ここを

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

ってすると、モノクロにできます。

もともとは、texture2Dっていうので、色データとかを格納していた部分を、rgbの値を平均化して、再設定しています。gl_FragColorで色を扱っていたんだな。なんて、自分で作ってた部分でありながら実感しますね。

前後の記事

前の記事:

次の記事:

関連の記事

コメントの投稿

  • サイト内検索

新作アプリの紹介

関連サイトの紹介

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