Androidのための三角形のOpenGL ESの描画

ここに画像を挿入説明
Androidの三角形は頂点シェーダで描画され、次のとおりです。

attribute vec4 vPosition;
void main() {
    gl_Position = vPosition;
}

アプリケーションによって渡されたvPosition頂点、。

フラグメントシェーダコードは次のとおりです。

precision mediump float;
void main()
{
  gl_FragColor = vec4(1,0,0,1);
}

プログラムを作成します。

private fun createProgram() {
            var vertexCode =
                AssetsUtils.readAssetsTxt(
                    context = context,
                    filePath = "glsl/triangle_vertex.glsl"
                )
            var fragmentCode =
                AssetsUtils.readAssetsTxt(
                    context = context,
                    filePath = "glsl/triangle_fragment.glsl"
                )
            mProgramHandle = GLTools.createAndLinkProgram(vertexCode, fragmentCode)
        }

triangle_vertex.glsl頂点シェーダとtriangle_vertex.glsl資産/ GLSLディレクトリに格納されたフラグメントシェーダとファイルを表し、readAssetsTxt資産のディレクトリ、ファイルを読み込むための一般的な方法。

ハンドルパラメータを取得します。

vPositionLoc = GLES20.glGetAttribLocation(mProgramHandle, "vPosition")

頂点データの初期化ラインコード次の通りであります:

var vertexBuffer = GLTools.array2Buffer(
            floatArrayOf(
                0.0f, 0.5f, 0.0f, // top
                -0.5f, -0.5f, 0.0f, // bottom left
                0.5f, -0.5f, 0.0f  // bottom right
            )
        )

描画:

override fun onDrawFrame(p0: GL10?) {
            GLES20.glUseProgram(mProgramHandle)

            vertexBuffer.position(0)
            GLES20.glEnableVertexAttribArray(vPositionLoc)
            GLES20.glVertexAttribPointer(vPositionLoc, 3, GLES20.GL_FLOAT, false, 0, vertexBuffer)
            
            GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, 3)
        }

GL_TRIANGLESは表現三角形を描きます。

三角形を描画する3つの方法があります。

  • GL_TRIANGLES:繰り返しても、三角形、三角形の頂点を描画する3つの頂点は、また、頂点配列内で宣言されなければなりません。6つの頂点がある場合、三角形は、三角形を形成する2,3、4,5,6から構成される。
  • GL_TRIANGLE_STRIP 2つの三角形の前面頂点、さらに三角形の後続頂点6、頂点が存在する場合、組成物は、(、(2,3,4)、三角形(1,2,3)の頂点を有しています3,4,5)、(4,5,6)4つの三角形の合計なので、N個の頂点があり、三角形は番号N-2で描かれています。
  • GL_TRIANGLE_FAN:中心点を最初の点、他の頂点ファンのエッジ点として6つの頂点は、組成物(2,3)を有する三角形の頂点、(1,3がある場合、隣接する三角形の組成を描画します、 4)、(1,4,5)、(1,5,6)4つの三角形の合計。

続きを読みます:

公開された123元の記事 ウォン称賛68 ビュー30万+

おすすめ

転載: blog.csdn.net/mengks1987/article/details/104105069