From d50b79d698c33c19cb1975fcb459ed4b6a954c29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Sat, 7 Sep 2019 20:10:00 +0200 Subject: [PATCH] python: expose gl.Version and related utilities. --- src/python/magnum/gl.cpp | 30 ++++++++++++++++++++++++++++++ src/python/magnum/test/test_gl.py | 14 ++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/src/python/magnum/gl.cpp b/src/python/magnum/gl.cpp index c0c0f7b..39d7c31 100644 --- a/src/python/magnum/gl.cpp +++ b/src/python/magnum/gl.cpp @@ -37,6 +37,7 @@ #include #include #include +#include #include #include "Corrade/Python.h" @@ -71,6 +72,35 @@ void gl(py::module& m) { m.doc() = "OpenGL wrapping layer"; + /* Version and related utilities */ + py::enum_{m, "Version", "OpenGL version"} + .value("NONE", GL::Version::None) + #ifndef MAGNUM_TARGET_GLES + .value("GL210", GL::Version::GL210) + .value("GL300", GL::Version::GL300) + .value("GL310", GL::Version::GL310) + .value("GL320", GL::Version::GL320) + .value("GL330", GL::Version::GL330) + .value("GL400", GL::Version::GL400) + .value("GL410", GL::Version::GL410) + .value("GL420", GL::Version::GL420) + .value("GL430", GL::Version::GL430) + .value("GL440", GL::Version::GL440) + .value("GL450", GL::Version::GL450) + .value("GL460", GL::Version::GL460) + #endif + .value("GLES200", GL::Version::GLES200) + .value("GLES300", GL::Version::GLES300) + #ifndef MAGNUM_TARGET_WEBGL + .value("GLES310", GL::Version::GLES310) + .value("GLES320", GL::Version::GLES320) + #endif + ; + m + .def("version", static_cast(GL::version), "Enum value from major and minor version number", py::arg("major"), py::arg("minor")) + .def("version", static_cast(*)(GL::Version)>(GL::version), "Major and minor version number from enum value", py::arg("version")) + .def("is_version_es", GL::isVersionES, "Whether given version is OpenGL ES or WebGL"); + /* Abstract shader program */ PyNonDestructibleClass{m, "AbstractShaderProgram", "Base for shader program implementations"}; diff --git a/src/python/magnum/test/test_gl.py b/src/python/magnum/test/test_gl.py index 25d2d23..f9e6e32 100644 --- a/src/python/magnum/test/test_gl.py +++ b/src/python/magnum/test/test_gl.py @@ -25,6 +25,7 @@ import unittest +import magnum from magnum import gl class Attribute(unittest.TestCase): @@ -39,3 +40,16 @@ class FramebufferClear(unittest.TestCase): def test_ops(self): self.assertEqual(gl.FramebufferClear.COLOR|gl.FramebufferClear.COLOR, gl.FramebufferClear.COLOR) self.assertFalse(gl.FramebufferClear.COLOR & ~gl.FramebufferClear.COLOR) + +class Version(unittest.TestCase): + def test_enum_to_major_minor(self): + if magnum.TARGET_GLES: + self.assertEqual(gl.version(gl.Version.GLES200), (2, 0)) + else: + self.assertEqual(gl.version(gl.Version.GL430), (4, 3)) + + def test_major_minor_to_enum(self): + if magnum.TARGET_GLES: + self.assertEqual(gl.version(3, 0), gl.Version.GLES300) + else: + self.assertEqual(gl.version(4, 3), gl.Version.GL430)