diff options
author | Xoppa <contact@xoppa.com> | 2016-03-05 15:38:34 +0100 |
---|---|---|
committer | Xoppa <contact@xoppa.com> | 2016-03-05 15:38:34 +0100 |
commit | a0d2b13bbc81ecd291c8c9a3f4dc7830373768c8 (patch) | |
tree | 423e8d1035caea0a9378c62b16051c277b5eb40a /backends | |
parent | 3fa9b759e2c0d608edcd25f56185bf38a6e319d7 (diff) | |
parent | d463e66190aed4582b8da5e38b4b6aacd788b2dc (diff) | |
download | libgdx-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')
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; } |