aboutsummaryrefslogtreecommitdiff
path: root/backends
diff options
context:
space:
mode:
authorXoppa <contact@xoppa.com>2016-03-05 15:38:34 +0100
committerXoppa <contact@xoppa.com>2016-03-05 15:38:34 +0100
commita0d2b13bbc81ecd291c8c9a3f4dc7830373768c8 (patch)
tree423e8d1035caea0a9378c62b16051c277b5eb40a /backends
parent3fa9b759e2c0d608edcd25f56185bf38a6e319d7 (diff)
parentd463e66190aed4582b8da5e38b4b6aacd788b2dc (diff)
downloadlibgdx-a0d2b13bbc81ecd291c8c9a3f4dc7830373768c8.tar.gz
Merge pull request #3788 from Tom-Ski/glversion
Extract out GLVersion for all backends in preparation for stronger c…
Diffstat (limited to 'backends')
-rw-r--r--backends/gdx-backend-android/src/com/badlogic/gdx/backends/android/AndroidGraphics.java38
-rw-r--r--backends/gdx-backend-headless/src/com/badlogic/gdx/backends/headless/mock/graphics/MockGraphics.java9
-rw-r--r--backends/gdx-backend-jglfw/src/com/badlogic/gdx/backends/jglfw/JglfwGraphics.java24
-rw-r--r--backends/gdx-backend-lwjgl/src/com/badlogic/gdx/backends/lwjgl/LwjglGraphics.java58
-rw-r--r--backends/gdx-backend-lwjgl3/src/com/badlogic/gdx/backends/lwjgl3/Lwjgl3Application.java43
-rw-r--r--backends/gdx-backend-lwjgl3/src/com/badlogic/gdx/backends/lwjgl3/Lwjgl3Graphics.java17
-rw-r--r--backends/gdx-backend-robovm/src/com/badlogic/gdx/backends/iosrobovm/IOSGraphics.java12
-rw-r--r--backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/GwtGraphics.java13
8 files changed, 112 insertions, 102 deletions
diff --git a/backends/gdx-backend-android/src/com/badlogic/gdx/backends/android/AndroidGraphics.java b/backends/gdx-backend-android/src/com/badlogic/gdx/backends/android/AndroidGraphics.java
index 44d81e6b5..d842d0883 100644
--- a/backends/gdx-backend-android/src/com/badlogic/gdx/backends/android/AndroidGraphics.java
+++ b/backends/gdx-backend-android/src/com/badlogic/gdx/backends/android/AndroidGraphics.java
@@ -32,6 +32,7 @@ import android.util.DisplayMetrics;
import android.view.Display;
import android.view.View;
+import com.badlogic.gdx.Application;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Graphics;
import com.badlogic.gdx.LifecycleListener;
@@ -50,6 +51,7 @@ import com.badlogic.gdx.graphics.Pixmap;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.TextureArray;
import com.badlogic.gdx.graphics.glutils.FrameBuffer;
+import com.badlogic.gdx.graphics.glutils.GLVersion;
import com.badlogic.gdx.graphics.glutils.ShaderProgram;
import com.badlogic.gdx.math.WindowedMean;
import com.badlogic.gdx.utils.Array;
@@ -70,9 +72,6 @@ public class AndroidGraphics implements Graphics, Renderer {
* kill the current process to avoid ANR */
static volatile boolean enforceContinuousRendering = false;
- /** The OpenGlES version */
- static int major, minor;
-
final View view;
int width;
int height;
@@ -80,6 +79,7 @@ public class AndroidGraphics implements Graphics, Renderer {
GL20 gl20;
GL30 gl30;
EGLContext eglContext;
+ GLVersion glVersion;
String extensions;
protected long lastFrameTime = System.nanoTime();
@@ -239,8 +239,11 @@ public class AndroidGraphics implements Graphics, Renderer {
*
* @param gl */
private void setupGL (javax.microedition.khronos.opengles.GL10 gl) {
- extractVersion(gl);
- if (config.useGL30 && AndroidGraphics.major > 2) {
+ String versionString = gl.glGetString(GL10.GL_VERSION);
+ String vendorString = gl.glGetString(GL10.GL_VENDOR);
+ String rendererString = gl.glGetString(GL10.GL_RENDERER);
+ glVersion = new GLVersion(Application.ApplicationType.Android, versionString, vendorString, rendererString);
+ if (config.useGL30 && glVersion.getMajorVersion() > 2) {
if (gl30 != null) return;
gl20 = gl30 = new AndroidGL30();
@@ -260,25 +263,6 @@ public class AndroidGraphics implements Graphics, Renderer {
Gdx.app.log(LOG_TAG, "OGL version: " + gl.glGetString(GL10.GL_VERSION));
Gdx.app.log(LOG_TAG, "OGL extensions: " + gl.glGetString(GL10.GL_EXTENSIONS));
}
-
- // Some manufactures (Samsung) like to add chars to version number, ignore those:
- private static int parseInt(String v, int defaultValue) {
- try {
- return ((Number)NumberFormat.getInstance().parse(v)).intValue();
- } catch (ParseException e) {
- Gdx.app.error(LOG_TAG, "Error parsing number: " + v +", assuming: " + defaultValue);
- return defaultValue;
- }
- }
-
- private static void extractVersion (javax.microedition.khronos.opengles.GL10 gl) {
- //Returns a version or release number of the form:
- //OpenGL<space>ES<space><version number><space><vendor-specific information>.
- String version = gl.glGetString(GL10.GL_VERSION);
- String[] versionSplit = version.split(" ")[2].split("\\.", 2);
- major = parseInt(versionSplit[0], 2);
- minor = versionSplit.length < 2 ? 0 : parseInt(versionSplit[1], 0);
- }
@Override
public void onSurfaceChanged (javax.microedition.khronos.opengles.GL10 gl, int width, int height) {
@@ -530,6 +514,12 @@ public class AndroidGraphics implements Graphics, Renderer {
/** {@inheritDoc} */
@Override
+ public GLVersion getGLVersion () {
+ return glVersion;
+ }
+
+ /** {@inheritDoc} */
+ @Override
public int getFramesPerSecond () {
return fps;
}
diff --git a/backends/gdx-backend-headless/src/com/badlogic/gdx/backends/headless/mock/graphics/MockGraphics.java b/backends/gdx-backend-headless/src/com/badlogic/gdx/backends/headless/mock/graphics/MockGraphics.java
index 334477caa..d4d6e01d7 100644
--- a/backends/gdx-backend-headless/src/com/badlogic/gdx/backends/headless/mock/graphics/MockGraphics.java
+++ b/backends/gdx-backend-headless/src/com/badlogic/gdx/backends/headless/mock/graphics/MockGraphics.java
@@ -16,12 +16,14 @@
package com.badlogic.gdx.backends.headless.mock.graphics;
+import com.badlogic.gdx.Application;
import com.badlogic.gdx.Graphics;
import com.badlogic.gdx.graphics.Cursor;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.GL30;
import com.badlogic.gdx.graphics.Pixmap;
import com.badlogic.gdx.graphics.Cursor.SystemCursor;
+import com.badlogic.gdx.graphics.glutils.GLVersion;
/** The headless backend does its best to mock elements. This is intended to make code-sharing between
* server and client as simple as possible.
@@ -33,7 +35,7 @@ public class MockGraphics implements Graphics {
int frames = 0;
int fps;
long lastTime = System.nanoTime();
-
+ GLVersion glVersion = new GLVersion(Application.ApplicationType.HeadlessDesktop, "", "", "");
@Override
public boolean isGL30Available() {
return false;
@@ -95,6 +97,11 @@ public class MockGraphics implements Graphics {
}
@Override
+ public GLVersion getGLVersion () {
+ return glVersion;
+ }
+
+ @Override
public float getPpiX() {
return 0;
}
diff --git a/backends/gdx-backend-jglfw/src/com/badlogic/gdx/backends/jglfw/JglfwGraphics.java b/backends/gdx-backend-jglfw/src/com/badlogic/gdx/backends/jglfw/JglfwGraphics.java
index b5627fe9a..e6d498641 100644
--- a/backends/gdx-backend-jglfw/src/com/badlogic/gdx/backends/jglfw/JglfwGraphics.java
+++ b/backends/gdx-backend-jglfw/src/com/badlogic/gdx/backends/jglfw/JglfwGraphics.java
@@ -18,6 +18,7 @@ package com.badlogic.gdx.backends.jglfw;
import static com.badlogic.jglfw.Glfw.*;
+import com.badlogic.gdx.Application;
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Graphics;
@@ -27,6 +28,7 @@ import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.GL30;
import com.badlogic.gdx.graphics.Pixmap;
import com.badlogic.gdx.graphics.Cursor.SystemCursor;
+import com.badlogic.gdx.graphics.glutils.GLVersion;
import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.GdxRuntimeException;
import com.badlogic.jglfw.GlfwVideoMode;
@@ -41,7 +43,7 @@ public class JglfwGraphics implements Graphics {
static final boolean isWindows = System.getProperty("os.name").contains("Windows");
static final boolean isLinux = System.getProperty("os.name").contains("Linux");
- static int glMajorVersion, glMinorVersion;
+ static GLVersion glVersion;
long window;
private boolean fullscreen;
@@ -85,15 +87,17 @@ public class JglfwGraphics implements Graphics {
}
// Create GL.
- String version = GL.glGetString(GL20.GL_VERSION);
- glMajorVersion = Integer.parseInt("" + version.charAt(0));
- glMinorVersion = Integer.parseInt("" + version.charAt(2));
+ String versionString = GL.glGetString(GL20.GL_VERSION);
+ String vendorString = GL.glGetString(GL20.GL_VENDOR);
+ String rendererString = GL.glGetString(GL20.GL_RENDERER);
+ glVersion = new GLVersion(Application.ApplicationType.Desktop, versionString, vendorString, rendererString);
- if (glMajorVersion <= 1)
- throw new GdxRuntimeException("OpenGL 2.0 or higher with the FBO extension is required. OpenGL version: " + version);
- if (glMajorVersion == 2 || version.contains("2.1")) {
+
+ if (glVersion.getMajorVersion() <= 1)
+ throw new GdxRuntimeException("OpenGL 2.0 or higher with the FBO extension is required. OpenGL version: " + glVersion.getMajorVersion() + ":" + glVersion.getMinorVersion());
+ if (glVersion.getMajorVersion() == 2) {
if (!supportsExtension("GL_EXT_framebuffer_object") && !supportsExtension("GL_ARB_framebuffer_object")) {
- throw new GdxRuntimeException("OpenGL 2.0 or higher with the FBO extension is required. OpenGL version: " + version
+ throw new GdxRuntimeException("OpenGL 2.0 or higher with the FBO extension is required. OpenGL version: " + glVersion.getMajorVersion() + ":" + glVersion.getMinorVersion()
+ ", FBO extension: false");
}
}
@@ -227,6 +231,10 @@ public class JglfwGraphics implements Graphics {
return GraphicsType.JGLFW;
}
+ public GLVersion getGLVersion () {
+ return glVersion;
+ }
+
public float getPpiX () {
// return getWidth() / (glfwGetMonitorPhysicalWidth(getWindowMonitor()) * 0.03937f); // mm to inches
return Toolkit.getDefaultToolkit().getScreenResolution();
diff --git a/backends/gdx-backend-lwjgl/src/com/badlogic/gdx/backends/lwjgl/LwjglGraphics.java b/backends/gdx-backend-lwjgl/src/com/badlogic/gdx/backends/lwjgl/LwjglGraphics.java
index 8295aae60..90ef03a3d 100644
--- a/backends/gdx-backend-lwjgl/src/com/badlogic/gdx/backends/lwjgl/LwjglGraphics.java
+++ b/backends/gdx-backend-lwjgl/src/com/badlogic/gdx/backends/lwjgl/LwjglGraphics.java
@@ -20,6 +20,8 @@ import java.awt.Canvas;
import java.awt.Toolkit;
import java.nio.ByteBuffer;
+import com.badlogic.gdx.Application;
+import com.badlogic.gdx.graphics.glutils.GLVersion;
import org.lwjgl.LWJGLException;
import org.lwjgl.input.Mouse;
import org.lwjgl.opengl.ContextAttribs;
@@ -41,10 +43,10 @@ import com.badlogic.gdx.utils.GdxRuntimeException;
/** An implementation of the {@link Graphics} interface based on Lwjgl.
* @author mzechner */
public class LwjglGraphics implements Graphics {
- /** The OpenGL (not ES) version */
- static int major, minor, release;
+
/** The suppored OpenGL extensions */
static Array<String> extensions;
+ static GLVersion glVersion;
GL20 gl20;
GL30 gl30;
@@ -128,6 +130,10 @@ public class LwjglGraphics implements Graphics {
return GraphicsType.LWJGL;
}
+ public GLVersion getGLVersion () {
+ return glVersion;
+ }
+
public int getFramesPerSecond () {
return fps;
}
@@ -219,22 +225,15 @@ public class LwjglGraphics implements Graphics {
}
private static void extractVersion () {
- // See https://www.opengl.org/wiki/GLAPI/glGetString, format is:
- // <major> "." <minor> ("." <release>) (<space> (<vendor_specific_info>))
- String version = org.lwjgl.opengl.GL11.glGetString(GL11.GL_VERSION);
- try {
- String[] v = version.split(" ", 2)[0].split("\\.", 3);
- major = Integer.parseInt(v[0]);
- minor = Integer.parseInt(v[1]);
- release = v.length > 2 ? Integer.parseInt(v[2]) : 0;
- } catch (Throwable t) {
- throw new GdxRuntimeException("Error extracting the OpenGL version: " + version, t);
- }
+ String versionString = org.lwjgl.opengl.GL11.glGetString(GL11.GL_VERSION);
+ String vendorString = org.lwjgl.opengl.GL11.glGetString(GL11.GL_VENDOR);
+ String rendererString = org.lwjgl.opengl.GL11.glGetString(GL11.GL_RENDERER);
+ glVersion = new GLVersion(Application.ApplicationType.Desktop, versionString, vendorString, rendererString);
}
private static void extractExtensions () {
extensions = new Array<String>();
- if (isOpenGLOrHigher(3, 2)) {
+ if (glVersion.isVersionEqualToOrHigher(3, 2)) {
int numExtensions = GL11.glGetInteger(GL30.GL_NUM_EXTENSIONS);
for (int i = 0; i < numExtensions; ++i)
extensions.add(org.lwjgl.opengl.GL30.glGetStringi(GL20.GL_EXTENSIONS, i));
@@ -243,27 +242,22 @@ public class LwjglGraphics implements Graphics {
}
}
- /** @return whether the supported OpenGL (not ES) version is equal or higher to the specified version. */
- private static boolean isOpenGLOrHigher (int major, int minor) {
- return LwjglGraphics.major > major || (LwjglGraphics.major == major && LwjglGraphics.minor >= minor);
- }
-
/** @return whether the supported OpenGL (not ES) version is compatible with OpenGL ES 3.x. */
private static boolean fullCompatibleWithGLES3 () {
// OpenGL ES 3.0 is compatible with OpenGL 4.3 core, see http://en.wikipedia.org/wiki/OpenGL_ES#OpenGL_ES_3.0
- return isOpenGLOrHigher(4, 3);
+ return glVersion.isVersionEqualToOrHigher(4, 3);
}
/** @return whether the supported OpenGL (not ES) version is compatible with OpenGL ES 2.x. */
private static boolean fullCompatibleWithGLES2 () {
// OpenGL ES 2.0 is compatible with OpenGL 4.1 core
// see https://www.opengl.org/registry/specs/ARB/ES2_compatibility.txt
- return isOpenGLOrHigher(4, 1) || extensions.contains("GL_ARB_ES2_compatibility", false);
+ return glVersion.isVersionEqualToOrHigher(4, 1) || extensions.contains("GL_ARB_ES2_compatibility", false);
}
private static boolean supportsFBO () {
// FBO is in core since OpenGL 3.0, see https://www.opengl.org/wiki/Framebuffer_Object
- return isOpenGLOrHigher(3, 0) || extensions.contains("GL_EXT_framebuffer_object", false)
+ return glVersion.isVersionEqualToOrHigher(3, 0) || extensions.contains("GL_EXT_framebuffer_object", false)
|| extensions.contains("GL_ARB_framebuffer_object", false);
}
@@ -323,9 +317,7 @@ public class LwjglGraphics implements Graphics {
createDisplayPixelFormat(useGL30, gles30ContextMajor, gles30ContextMinor);
return;
}
- String glInfo = glInfo();
- throw new GdxRuntimeException("OpenGL is not supported by the video driver"
- + (glInfo.isEmpty() ? "." : (":" + glInfo())), ex3);
+ throw new GdxRuntimeException("OpenGL is not supported by the video driver: " + glVersion.getDebugVersionString(), ex3);
}
if (getDisplayMode().bitsPerPixel == 16) {
bufferFormat = new BufferFormat(5, 6, 5, 0, 8, 0, 0, false);
@@ -348,13 +340,13 @@ public class LwjglGraphics implements Graphics {
gl20 = new LwjglGL20();
}
- if (!isOpenGLOrHigher(2, 0))
+ if (!glVersion.isVersionEqualToOrHigher(2, 0))
throw new GdxRuntimeException("OpenGL 2.0 or higher with the FBO extension is required. OpenGL version: "
- + GL11.glGetString(GL11.GL_VERSION) + "\n" + glInfo());
+ + GL11.glGetString(GL11.GL_VERSION) + "\n" + glVersion.getDebugVersionString());
if (!supportsFBO()) {
throw new GdxRuntimeException("OpenGL 2.0 or higher with the FBO extension is required. OpenGL version: "
- + GL11.glGetString(GL11.GL_VERSION) + ", FBO extension: false\n" + glInfo());
+ + GL11.glGetString(GL11.GL_VERSION) + ", FBO extension: false\n" + glVersion.getDebugVersionString());
}
Gdx.gl = gl20;
@@ -362,16 +354,6 @@ public class LwjglGraphics implements Graphics {
Gdx.gl30 = gl30;
}
- private String glInfo () {
- try {
- return GL11.glGetString(GL11.GL_VENDOR) + "\n" //
- + GL11.glGetString(GL11.GL_RENDERER) + "\n" //
- + GL11.glGetString(GL11.GL_VERSION);
- } catch (Throwable ignored) {
- }
- return "";
- }
-
@Override
public float getPpiX () {
return Toolkit.getDefaultToolkit().getScreenResolution();
diff --git a/backends/gdx-backend-lwjgl3/src/com/badlogic/gdx/backends/lwjgl3/Lwjgl3Application.java b/backends/gdx-backend-lwjgl3/src/com/badlogic/gdx/backends/lwjgl3/Lwjgl3Application.java
index dc1d8271d..51a8ad3e8 100644
--- a/backends/gdx-backend-lwjgl3/src/com/badlogic/gdx/backends/lwjgl3/Lwjgl3Application.java
+++ b/backends/gdx-backend-lwjgl3/src/com/badlogic/gdx/backends/lwjgl3/Lwjgl3Application.java
@@ -18,6 +18,7 @@ package com.badlogic.gdx.backends.lwjgl3;
import java.io.File;
+import com.badlogic.gdx.graphics.glutils.GLVersion;
import org.lwjgl.glfw.GLFW;
import org.lwjgl.glfw.GLFWErrorCallback;
import org.lwjgl.glfw.GLFWVidMode;
@@ -56,7 +57,7 @@ public class Lwjgl3Application implements Application {
private final Array<Runnable> executedRunnables = new Array<Runnable>();
private final Array<LifecycleListener> lifecycleListeners = new Array<LifecycleListener>();
private static GLFWErrorCallback errorCallback;
- private static int versionMajor, versionMinor, versionRelease;
+ private static GLVersion glVersion;
static void initializeGlfw() {
if (errorCallback == null) {
@@ -378,14 +379,14 @@ public class Lwjgl3Application implements Application {
GLFW.glfwSwapInterval(config.vSyncEnabled ? 1 : 0);
GL.createCapabilities();
- extractVersion();
- if (!isOpenGLOrHigher(2, 0))
+ initiateGL();
+ if (!glVersion.isVersionEqualToOrHigher(2, 0))
throw new GdxRuntimeException("OpenGL 2.0 or higher with the FBO extension is required. OpenGL version: "
- + GL11.glGetString(GL11.GL_VERSION) + "\n" + glInfo());
+ + GL11.glGetString(GL11.GL_VERSION) + "\n" + glVersion.getDebugVersionString());
if (!supportsFBO()) {
throw new GdxRuntimeException("OpenGL 2.0 or higher with the FBO extension is required. OpenGL version: "
- + GL11.glGetString(GL11.GL_VERSION) + ", FBO extension: false\n" + glInfo());
+ + GL11.glGetString(GL11.GL_VERSION) + ", FBO extension: false\n" + glVersion.getDebugVersionString());
}
for (int i = 0; i < 2; i++) {
@@ -397,37 +398,17 @@ public class Lwjgl3Application implements Application {
return windowHandle;
}
- private static void extractVersion () {
- // See https://www.opengl.org/wiki/GLAPI/glGetString, format is:
- // <major> "." <minor> ("." <release>) (<space> (<vendor_specific_info>))
- String version = GL11.glGetString(GL11.GL_VERSION);
- try {
- String[] v = version.split(" ", 2)[0].split("\\.", 3);
- versionMajor = Integer.parseInt(v[0]);
- versionMinor = Integer.parseInt(v[1]);
- versionRelease = v.length > 2 ? Integer.parseInt(v[2]) : 0;
- } catch (Throwable t) {
- throw new GdxRuntimeException("Error extracting the OpenGL version: " + version, t);
- }
- }
-
- private static boolean isOpenGLOrHigher (int major, int minor) {
- return versionMajor > major || (versionMajor == major && versionMinor >= minor);
+ private static void initiateGL () {
+ String versionString = GL11.glGetString(GL11.GL_VERSION);
+ String vendorString = GL11.glGetString(GL11.GL_VENDOR);
+ String rendererString = GL11.glGetString(GL11.GL_RENDERER);
+ glVersion = new GLVersion(Application.ApplicationType.Desktop, versionString, vendorString, rendererString);
}
private static boolean supportsFBO () {
// FBO is in core since OpenGL 3.0, see https://www.opengl.org/wiki/Framebuffer_Object
- return isOpenGLOrHigher(3, 0) || GLFW.glfwExtensionSupported("GL_EXT_framebuffer_object") == GLFW.GLFW_TRUE
+ return glVersion.isVersionEqualToOrHigher(3, 0) || GLFW.glfwExtensionSupported("GL_EXT_framebuffer_object") == GLFW.GLFW_TRUE
|| GLFW.glfwExtensionSupported("GL_ARB_framebuffer_object") == GLFW.GLFW_TRUE;
}
- private static String glInfo () {
- try {
- return GL11.glGetString(GL11.GL_VENDOR) + "\n" //
- + GL11.glGetString(GL11.GL_RENDERER) + "\n" //
- + GL11.glGetString(GL11.GL_VERSION);
- } catch (Throwable ignored) {
- }
- return "";
- }
}
diff --git a/backends/gdx-backend-lwjgl3/src/com/badlogic/gdx/backends/lwjgl3/Lwjgl3Graphics.java b/backends/gdx-backend-lwjgl3/src/com/badlogic/gdx/backends/lwjgl3/Lwjgl3Graphics.java
index 7c1326213..b3ee73bde 100644
--- a/backends/gdx-backend-lwjgl3/src/com/badlogic/gdx/backends/lwjgl3/Lwjgl3Graphics.java
+++ b/backends/gdx-backend-lwjgl3/src/com/badlogic/gdx/backends/lwjgl3/Lwjgl3Graphics.java
@@ -18,6 +18,8 @@ package com.badlogic.gdx.backends.lwjgl3;
import java.nio.IntBuffer;
+import com.badlogic.gdx.Application;
+import com.badlogic.gdx.graphics.glutils.GLVersion;
import org.lwjgl.BufferUtils;
import org.lwjgl.PointerBuffer;
import org.lwjgl.glfw.GLFW;
@@ -32,11 +34,13 @@ import com.badlogic.gdx.graphics.GL30;
import com.badlogic.gdx.graphics.Pixmap;
import com.badlogic.gdx.utils.Disposable;
import com.badlogic.gdx.utils.GdxRuntimeException;
+import org.lwjgl.opengl.GL11;
public class Lwjgl3Graphics implements Graphics, Disposable {
private final Lwjgl3Window window;
private final GL20 gl20;
private final GL30 gl30;
+ private GLVersion glVersion;
private volatile int backBufferWidth;
private volatile int backBufferHeight;
private volatile int logicalWidth;
@@ -76,9 +80,17 @@ public class Lwjgl3Graphics implements Graphics, Disposable {
this.gl30 = null;
}
updateFramebufferInfo();
+ initiateGL();
GLFW.glfwSetFramebufferSizeCallback(window.getWindowHandle(), resizeCallback);
}
+ private void initiateGL () {
+ String versionString = gl20.glGetString(GL11.GL_VERSION);
+ String vendorString = gl20.glGetString(GL11.GL_VENDOR);
+ String rendererString = gl20.glGetString(GL11.GL_RENDERER);
+ glVersion = new GLVersion(Application.ApplicationType.Desktop, versionString, vendorString, rendererString);
+ }
+
public Lwjgl3Window getWindow() {
return window;
}
@@ -188,6 +200,11 @@ public class Lwjgl3Graphics implements Graphics, Disposable {
}
@Override
+ public GLVersion getGLVersion () {
+ return glVersion;
+ }
+
+ @Override
public float getPpiX() {
return getPpcX() / 0.393701f;
}
diff --git a/backends/gdx-backend-robovm/src/com/badlogic/gdx/backends/iosrobovm/IOSGraphics.java b/backends/gdx-backend-robovm/src/com/badlogic/gdx/backends/iosrobovm/IOSGraphics.java
index cc81fa1fe..68839c67b 100644
--- a/backends/gdx-backend-robovm/src/com/badlogic/gdx/backends/iosrobovm/IOSGraphics.java
+++ b/backends/gdx-backend-robovm/src/com/badlogic/gdx/backends/iosrobovm/IOSGraphics.java
@@ -16,6 +16,8 @@
package com.badlogic.gdx.backends.iosrobovm;
+import com.badlogic.gdx.Application;
+import com.badlogic.gdx.graphics.glutils.GLVersion;
import org.robovm.apple.coregraphics.CGRect;
import org.robovm.apple.foundation.NSObject;
import org.robovm.apple.glkit.GLKView;
@@ -157,6 +159,7 @@ public class IOSGraphics extends NSObject implements Graphics, GLKViewDelegate,
IOSApplicationConfiguration config;
EAGLContext context;
+ GLVersion glVersion;
GLKView view;
IOSUIViewController viewController;
@@ -181,6 +184,10 @@ public class IOSGraphics extends NSObject implements Graphics, GLKViewDelegate,
gl30 = null;
}
+ String versionString = gl20.glGetString(GL20.GL_VERSION);
+ String vendorString = gl20.glGetString(GL20.GL_VENDOR);
+ String rendererString = gl20.glGetString(GL20.GL_RENDERER);
+ glVersion = new GLVersion(Application.ApplicationType.iOS, versionString, vendorString, rendererString);
view = new GLKView(new CGRect(0, 0, bounds.getWidth(), bounds.getHeight()), context) {
@@ -394,6 +401,11 @@ public class IOSGraphics extends NSObject implements Graphics, GLKViewDelegate,
}
@Override
+ public GLVersion getGLVersion () {
+ return glVersion;
+ }
+
+ @Override
public float getPpiX () {
return ppiX;
}
diff --git a/backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/GwtGraphics.java b/backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/GwtGraphics.java
index 1e06bf1a2..36c248425 100644
--- a/backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/GwtGraphics.java
+++ b/backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/GwtGraphics.java
@@ -16,6 +16,7 @@
package com.badlogic.gdx.backends.gwt;
+import com.badlogic.gdx.Application;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Graphics;
import com.badlogic.gdx.backends.gwt.GwtGraphics.OrientationLockType;
@@ -24,6 +25,7 @@ import com.badlogic.gdx.graphics.Cursor.SystemCursor;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.GL30;
import com.badlogic.gdx.graphics.Pixmap;
+import com.badlogic.gdx.graphics.glutils.GLVersion;
import com.badlogic.gdx.utils.GdxRuntimeException;
import com.google.gwt.canvas.client.Canvas;
import com.google.gwt.dom.client.CanvasElement;
@@ -51,6 +53,7 @@ public class GwtGraphics implements Graphics {
CanvasElement canvas;
WebGLRenderingContext context;
+ GLVersion glVersion;
GL20 gl;
String extensions;
float fps = 0;
@@ -80,6 +83,11 @@ public class GwtGraphics implements Graphics {
context = WebGLRenderingContext.getContext(canvas, attributes);
context.viewport(0, 0, config.width, config.height);
this.gl = config.useDebugGL ? new GwtGL20Debug(context) : new GwtGL20(context);
+
+ String versionString = gl.glGetString(GL20.GL_VERSION);
+ String vendorString = gl.glGetString(GL20.GL_VENDOR);
+ String rendererString = gl.glGetString(GL20.GL_RENDERER);
+ glVersion = new GLVersion(Application.ApplicationType.WebGL, versionString, vendorString, rendererString);
}
public WebGLRenderingContext getContext () {
@@ -132,6 +140,11 @@ public class GwtGraphics implements Graphics {
}
@Override
+ public GLVersion getGLVersion () {
+ return glVersion;
+ }
+
+ @Override
public float getPpiX () {
return 96;
}