PNGでテクスチャ
2013-11-05


GL_TEXTURE_WRAP_S、GL_TEXTURE_WRAP_Tを GL_CLAMP_TO_EDGEに設定していますが、こうするとOpenGL ES 2.0ではテクスチャの幅や高さが2の累乗でなくても良くなるそうです。


テクスチャ描画のために、新しくシェーダプログラムを追加しています。
Renderer.cpp
        {                                               // SHADER_TEXTURE(テクスチャ有り)
                static const
                char    gVertexShader[] =                                       // 頂点シェーダプログラム
                                        "attribute vec4 position;"
                                        "attribute vec4 color;"
                                        "varying vec4 vColor;"
                                        "attribute vec2 texcoord;"
                                        "varying vec2 vTexcoord;"
                                        "uniform mat4 projection;"
                                        "void main() {"
                                                "gl_Position = projection*position;"
                                                "vColor = color;"
                                                "vTexcoord = texcoord;"
                                        "}";

                static const
                char    gFragmentShader[] =                             // フラグメントシェーダプログラム
                                        "precision mediump float;"
                                        "varying vec4 vColor;"
                                        "varying vec2 vTexcoord;"
                                        "uniform sampler2D texture;"
                                        "void main() {"
                                                "gl_FragColor = texture2D(texture, vTexcoord)*vColor;"
                                        "}";

                vert_shader = loadShader(GL_VERTEX_SHADER, gVertexShader);                      // 頂点シェーダ
                frag_shader = loadShader(GL_FRAGMENT_SHADER, gFragmentShader);          // フラグメントシェーダ

                shader[SHADER_TEXTURE].init(vert_shader, frag_shader, TRUE);            // シェーダプログラム作成
                glDeleteShader(vert_shader);
                glDeleteShader(frag_shader);
        }

シェーダが増えたことで切り替え処理など他にも変更点はあるのですが、ここでは省略します.


最後に実施にテクスチャを描画する部分です。
AppMain.cpp

続きを読む
戻る
[Android プログラミング]

コメント(全0件)
コメントをする


記事を書く
powered by ASAHIネット