Как визуализировать OpenGL вместе с пользовательским интерфейсом Jetpack Compose, не закрывая другие элементыAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Как визуализировать OpenGL вместе с пользовательским интерфейсом Jetpack Compose, не закрывая другие элементы

Сообщение Anonymous »

Я пытаюсь визуализировать представление OpenGL, под которым отображается пользовательский интерфейс Jetpack Compose. Я взял пример кода из https://developer.android.com/develop/u ... in-compose, но OpenGL рисует поверх элементов Compose.
На первом снимке экрана показан механизм рендеринга OpenGL поверх всех элементов, отображаемых Compose. На втором снимке экрана показано, как это выглядит, когда я удаляю все остальные составные элементы из составного элемента.
Как мне заставить OpenGL уважать другие элементы Jetpack Compose? Я был бы очень рад, если бы мог уменьшить окно OpenGL с помощью Compose, но если бы я мог отображать элементы поверх него, это было бы прекрасно.
Изображение

Изображение

class MyGLSurfaceView(context: Context) : GLSurfaceView(context) {

private val renderer: MyGLRenderer

init {
setEGLContextClientVersion(2)
renderer = MyGLRenderer()
setRenderer(renderer)
}
}
@Composable
fun CustomView() {
AndroidView(
modifier = Modifier.fillMaxSize(),
factory = { context ->
// Creates view
MyGLSurfaceView(context).apply { }
},
update = { view ->
// View's been inflated or state read in this block has been updated
// Add logic here if necessary
}
)
}

@Composable
fun ContentExample() {
Column(Modifier.fillMaxSize()) {
CustomView()
Text("Look at this CustomView!")
Button(onClick = { }) {
Text("Test button")
}
}
}

class MyGLRenderer : GLSurfaceView.Renderer {

override fun onSurfaceCreated(unused: GL10, config: EGLConfig) {
// Set the background frame color
GLES20.glClearColor(0.0f, 0.0f, 0.0f, 1.0f)
}

override fun onDrawFrame(unused: GL10) {
// Redraw background color
GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT)
}
override fun onSurfaceChanged(unused: GL10, width: Int, height: Int) {
GLES20.glViewport(0, 0, width, height)
}
}


Подробнее здесь: https://stackoverflow.com/questions/787 ... er-element
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»