Skip to content

Commit 0d3be6c

Browse files
committed
Fix issues in GLES backends
1 parent ca61194 commit 0d3be6c

5 files changed

Lines changed: 28 additions & 5 deletions

File tree

jme3-android/src/main/java/com/jme3/renderer/android/AndroidGL.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -348,16 +348,16 @@ public String glGetProgramInfoLog(int program, int maxLength) {
348348

349349
@Override
350350
public long glGetQueryObjectui64(int query, int pname) {
351-
IntBuffer buff = IntBuffer.allocate(1);
351+
IntBuffer buff = tmpBuff.clear();
352352
//FIXME This is wrong IMO should be glGetQueryObjectui64v with a LongBuffer but it seems the API doesn't provide it.
353353
GLES30.glGetQueryObjectuiv(query, pname, buff);
354354
return buff.get(0);
355355
}
356356

357357
@Override
358358
public int glGetQueryObjectiv(int query, int pname) {
359-
IntBuffer buff = IntBuffer.allocate(1);
360-
GLES30.glGetQueryiv(query, pname, buff);
359+
IntBuffer buff = tmpBuff.clear();
360+
GLES30.glGetQueryObjectuiv(query, pname, buff);
361361
return buff.get(0);
362362
}
363363

@@ -758,5 +758,10 @@ public void glGenVertexArrays(IntBuffer arrays) {
758758

759759
}
760760

761+
@Override
762+
public String glGetString(int name, int index) {
763+
return GLES30.glGetStringi(name, index);
764+
}
765+
761766
}
762767

jme3-core/src/main/java/com/jme3/renderer/opengl/GLES_30.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,14 @@ public interface GLES_30 extends GL {
4242

4343
public static final int GL_RGB10_A2 = 0x8059;
4444
public static final int GL_UNSIGNED_INT_2_10_10_10_REV = 0x8368;
45-
45+
public static final int GL_NUM_EXTENSIONS = 0x821D;
46+
4647
public void glBindVertexArray(int array);
4748

4849
public void glDeleteVertexArrays(IntBuffer arrays);
4950

5051
public void glGenVertexArrays(IntBuffer arrays);
52+
53+
public String glGetString(final int name, final int index);
54+
5155
}

jme3-core/src/main/java/com/jme3/renderer/opengl/GLRenderer.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,15 @@ private HashSet<String> loadExtensions() {
186186
gl3.glGetInteger(GL3.GL_NUM_EXTENSIONS, intBuf16);
187187
int extensionCount = intBuf16.get(0);
188188
for (int i = 0; i < extensionCount; i++) {
189-
String extension = gl3.glGetString(GL.GL_EXTENSIONS, i);
189+
String extension = gl3.glGetString(GL3.GL_EXTENSIONS, i);
190+
extensionSet.add(extension);
191+
}
192+
} else if (caps.contains(Caps.OpenGLES30)) {
193+
GLES_30 gles = (GLES_30) gl;
194+
gles.glGetInteger(GLES_30.GL_NUM_EXTENSIONS, intBuf16);
195+
int extensionCount = intBuf16.get(0);
196+
for (int i = 0; i < extensionCount; i++) {
197+
String extension = gles.glGetString(GLES_30.GL_EXTENSIONS, i);
190198
extensionSet.add(extension);
191199
}
192200
} else {

jme3-ios/src/main/java/com/jme3/renderer/ios/IosGL.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -809,5 +809,9 @@ public void glGenVertexArrays(IntBuffer arrays) {
809809
throw new UnsupportedOperationException("Unimplemented method 'glGenVertexArrays'");
810810
}
811811

812+
@Override
813+
public String glGetString(int name, int index) {
814+
return JmeIosGLES.glGetStringi(name, index);
815+
}
812816

813817
}

jme3-ios/src/main/java/com/jme3/renderer/ios/JmeIosGLES.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,8 @@ private JmeIosGLES() {
201201
public static native String glGetShaderInfoLog(int shader);
202202
public static native void glGetShaderiv(int shader, int pname, int[] params, int offset);
203203
public static native String glGetString(int name);
204+
205+
public static native String glGetStringi(int name, int index);
204206
public static native int glGetUniformLocation(int program, String name);
205207
public static native boolean glIsEnabled(int cap);
206208
public static native boolean glIsFramebuffer(int framebuffer);

0 commit comments

Comments
 (0)