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