Skip to content

Commit aceb238

Browse files
committed
fix: explicitly set opengl context management api to native for glx, bind opengl instead of gles for egl context
1 parent b0ebb3e commit aceb238

File tree

3 files changed

+15
-8
lines changed

3 files changed

+15
-8
lines changed

src/main/java/dev/silenium/compose/gl/context/EGLContext.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ data class EGLContext(
109109

110110
override fun createOffscreen(parent: EGLContext): EGLContext {
111111
val display = parent.display
112-
check(eglBindAPI(EGL_OPENGL_ES_API)) { "Failed to bind API: 0x${eglGetError().toString(16).uppercase()}" }
112+
check(eglBindAPI(EGL_OPENGL_API)) { "Failed to bind API: 0x${eglGetError().toString(16).uppercase()}" }
113113

114114
val attribList = intArrayOf(
115115
EGL_RED_SIZE,
@@ -121,7 +121,7 @@ data class EGLContext(
121121
EGL_ALPHA_SIZE,
122122
8,
123123
EGL_RENDERABLE_TYPE,
124-
EGL_OPENGL_ES3_BIT,
124+
EGL_OPENGL_BIT,
125125
EGL_NONE
126126
)
127127
val config = MemoryUtil.memAllocPointer(1)
@@ -135,7 +135,6 @@ data class EGLContext(
135135
parent.context,
136136
intArrayOf(
137137
EGL_CONTEXT_MAJOR_VERSION, 3,
138-
EGL_CONTEXT_MINOR_VERSION, 2,
139138
EGL_NONE
140139
)
141140
)

src/main/java/dev/silenium/compose/gl/context/GLContextProviderFactory.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,15 @@ package dev.silenium.compose.gl.context
22

33
import dev.silenium.libs.jni.NativePlatform
44
import dev.silenium.libs.jni.Platform
5+
import org.lwjgl.system.Configuration
56
import org.slf4j.LoggerFactory
67

78
object GLContextProviderFactory {
9+
init {
10+
Configuration.OPENGL_CONTEXT_API.set("native")
11+
Configuration.OPENGLES_CONTEXT_API.set("native")
12+
}
13+
814
private val log = LoggerFactory.getLogger(GLContextProviderFactory::class.java)
915

1016
private val override by lazy {

src/test/kotlin/Main.kt

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,11 @@ import androidx.compose.ui.window.Window
1818
import androidx.compose.ui.window.awaitApplication
1919
import dev.silenium.compose.gl.surface.*
2020
import kotlinx.coroutines.delay
21-
import kotlinx.coroutines.isActive
2221
import me.saket.telephoto.zoomable.ZoomSpec
2322
import me.saket.telephoto.zoomable.rememberZoomableState
2423
import me.saket.telephoto.zoomable.zoomable
2524
import org.jetbrains.skia.Paint
2625
import org.lwjgl.opengl.GL30.*
27-
import kotlin.random.Random
28-
import kotlin.random.nextInt
2926
import kotlin.time.Duration.Companion.milliseconds
3027
import kotlin.time.Duration.Companion.seconds
3128

@@ -103,7 +100,7 @@ fun ApplicationScope.Content() {
103100

104101
redrawAfter(null)
105102
}
106-
val modifier = Modifier
103+
val modifier = Modifier
107104
.aspectRatio(1f)
108105
.zoomable(rememberZoomableState(ZoomSpec(6f)))
109106
.align(Alignment.Center)
@@ -120,7 +117,12 @@ fun ApplicationScope.Content() {
120117
modifier = modifier,
121118
contentAlignment = Alignment.Center,
122119
) {
123-
Text("Surface is not visible", style = MaterialTheme.typography.h6, color = MaterialTheme.colors.onBackground, modifier = Modifier.align(Alignment.Center))
120+
Text(
121+
"Surface is not visible",
122+
style = MaterialTheme.typography.h6,
123+
color = MaterialTheme.colors.onBackground,
124+
modifier = Modifier.align(Alignment.Center)
125+
)
124126
}
125127
}
126128
Surface(modifier = Modifier.align(Alignment.TopStart).padding(4.dp)) {

0 commit comments

Comments
 (0)