[Android] 006. OpenGL ES

Jetpack ComposeでOpenGL ES(GLSurfaceView)を使用する手順の覚書です

Android DeveloperのOpenGL ESのガイドは以下
https://developer.android.com/develop/ui/views/graphics/opengl

AndroidManifest

OpenGLを使用するためにはAndroidManifestに以下を追加します
versionの指定は上位 16ビットはメジャー番号を下位16ビットはマイナー番号を指定
2.0の場合は0x00020000となります
https://developer.android.com/guide/topics/manifest/uses-feature-element?hl=ja

<manifest>
    <uses-feature android:glEsVersion="0x00020000" android:required="true" />
</manifest>

GLSurfaceView

とりあえず最低限の実装

GLSurfaceView.Rendererを実装してGLSurfaceViewにセットします

class GLRenderer : GLSurfaceView.Renderer {
    override fun onSurfaceCreated(gl: GL10?, config: EGLConfig?) {
        // backgraundを黒で初期化
        GLES20.glClearColor(0.0f, 0.0f, 0.0f, 1.0f)
    }
    override fun onSurfaceChanged(gl: GL10?, width: Int, height: Int) {
        GLES20.glViewport(0, 0, width, height)
    }
    override fun onDrawFrame(gl: GL10?) {
        GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT + GLES20.GL_DEPTH_BUFFER_BIT)
    }
}
AndroidView(
    factory = {
        GLSurfaceView(it).apply {
            setEGLContextClientVersion(2)
            setRenderer(GLRenderer())
            renderMode = GLSurfaceView.RENDERMODE_CONTINUOUSLY
        }
    },
    modifier = Modifier.fillMaxSize()
)

Android Studio Giraffe 2022.3.1 built on June 29, 2023