Browse Source

python: expose GL::RenderbufferFormat and GL::Renderbuffer.

pull/2/head
Vladimír Vondruš 7 years ago
parent
commit
b5e4253960
  1. 104
      src/python/magnum/gl.cpp
  2. 6
      src/python/magnum/test/test_gl_gl.py

104
src/python/magnum/gl.cpp

@ -33,6 +33,8 @@
#include <Magnum/GL/DefaultFramebuffer.h>
#include <Magnum/GL/Mesh.h>
#include <Magnum/GL/Renderer.h>
#include <Magnum/GL/Renderbuffer.h>
#include <Magnum/GL/RenderbufferFormat.h>
#include <Magnum/Math/Color.h>
#include "corrade/PyArrayView.h"
@ -168,6 +170,108 @@ void gl(py::module& m) {
}, "Set buffer data", py::arg("data"), py::arg("usage") = GL::BufferUsage::StaticDraw)
/** @todo more */;
/* Renderbuffer */
py::enum_<GL::RenderbufferFormat>{m, "RenderbufferFormat", "Internal renderbuffer format"}
#ifndef MAGNUM_TARGET_GLES
.value("RED", GL::RenderbufferFormat::Red)
#endif
#if !(defined(MAGNUM_TARGET_WEBGL) && defined(MAGNUM_TARGET_GLES2))
.value("R8", GL::RenderbufferFormat::R8)
#endif
#ifndef MAGNUM_TARGET_GLES
.value("RG", GL::RenderbufferFormat::RG)
#endif
#if !(defined(MAGNUM_TARGET_WEBGL) && defined(MAGNUM_TARGET_GLES2))
.value("RG8", GL::RenderbufferFormat::RG8)
#endif
#ifndef MAGNUM_TARGET_GLES
.value("RGBA", GL::RenderbufferFormat::RGBA)
#endif
#if !(defined(MAGNUM_TARGET_WEBGL) && defined(MAGNUM_TARGET_GLES2))
.value("RGBA8", GL::RenderbufferFormat::RGBA8)
#endif
#ifndef MAGNUM_TARGET_GLES
.value("R16", GL::RenderbufferFormat::R16)
.value("RG16", GL::RenderbufferFormat::RG16)
.value("RGB16", GL::RenderbufferFormat::RGB16)
.value("RGBA16", GL::RenderbufferFormat::RGBA16)
.value("R8UI", GL::RenderbufferFormat::R8UI)
.value("RG8UI", GL::RenderbufferFormat::RG8UI)
.value("RGBA8UI", GL::RenderbufferFormat::RGBA8UI)
.value("R8I", GL::RenderbufferFormat::R8I)
.value("RG8I", GL::RenderbufferFormat::RG8I)
.value("RGBA8I", GL::RenderbufferFormat::RGBA8I)
.value("R16UI", GL::RenderbufferFormat::R16UI)
.value("RG16UI", GL::RenderbufferFormat::RG16UI)
.value("RGBA16UI", GL::RenderbufferFormat::RGBA16UI)
.value("R16I", GL::RenderbufferFormat::R16I)
.value("RG16I", GL::RenderbufferFormat::RG16I)
.value("RGBA16I", GL::RenderbufferFormat::RGBA16I)
.value("R32UI", GL::RenderbufferFormat::R32UI)
.value("RG32UI", GL::RenderbufferFormat::RG32UI)
.value("RGBA32UI", GL::RenderbufferFormat::RGBA32UI)
.value("R32I", GL::RenderbufferFormat::R32I)
.value("RG32I", GL::RenderbufferFormat::RG32I)
.value("RGBA32I", GL::RenderbufferFormat::RGBA32I)
.value("R16F", GL::RenderbufferFormat::R16F)
.value("RG16F", GL::RenderbufferFormat::RG16F)
.value("RGBA16F", GL::RenderbufferFormat::RGBA16F)
.value("R32F", GL::RenderbufferFormat::R32F)
.value("RG32F", GL::RenderbufferFormat::RG32F)
.value("RGBA32F", GL::RenderbufferFormat::RGBA32F)
#endif
#ifndef MAGNUM_TARGET_GLES2
.value("RGB10A2", GL::RenderbufferFormat::RGB10A2)
.value("RGB10A2UI", GL::RenderbufferFormat::RGB10A2UI)
#endif
.value("RGB5A1", GL::RenderbufferFormat::RGB5A1)
.value("RGBA4", GL::RenderbufferFormat::RGBA4)
#ifndef MAGNUM_TARGET_GLES
.value("R11FG11FB10F", GL::RenderbufferFormat::R11FG11FB10F)
#endif
.value("RGB565", GL::RenderbufferFormat::RGB565)
.value("SRGB8_ALPHA8", GL::RenderbufferFormat::SRGB8Alpha8)
#ifndef MAGNUM_TARGET_GLES
.value("DEPTH_COMPONENT", GL::RenderbufferFormat::DepthComponent)
#endif
.value("DEPTH_COMPONENT16", GL::RenderbufferFormat::DepthComponent16)
#if !(defined(MAGNUM_TARGET_WEBGL) && defined(MAGNUM_TARGET_GLES2))
.value("DEPTH_COMPONENT24", GL::RenderbufferFormat::DepthComponent24)
#endif
#ifndef MAGNUM_TARGET_WEBGL
.value("DEPTH_COMPONENT32", GL::RenderbufferFormat::DepthComponent32)
#endif
#ifndef MAGNUM_TARGET_GLES2
.value("DEPTH_COMPONENT32F", GL::RenderbufferFormat::DepthComponent32F)
#endif
#ifndef MAGNUM_TARGET_GLES
.value("STENCIL_INDEX", GL::RenderbufferFormat::StencilIndex)
#endif
#ifndef MAGNUM_TARGET_WEBGL
.value("STENCIL_INDEX1", GL::RenderbufferFormat::StencilIndex1)
.value("STENCIL_INDEX4", GL::RenderbufferFormat::StencilIndex4)
#endif
.value("STENCIL_INDEX8", GL::RenderbufferFormat::StencilIndex8)
#ifndef MAGNUM_TARGET_GLES
.value("STENCIL_INDEX16", GL::RenderbufferFormat::StencilIndex16)
#endif
#if !defined(MAGNUM_TARGET_GLES) || (defined(MAGNUM_TARGET_WEBGL) && defined(MAGNUM_TARGET_GLES2))
.value("DEPTH_STENCIL", GL::RenderbufferFormat::DepthStencil)
#endif
#if !(defined(MAGNUM_TARGET_WEBGL) && defined(MAGNUM_TARGET_GLES2))
.value("DEPTH24_STENCIL8", GL::RenderbufferFormat::Depth24Stencil8)
#endif
#ifndef MAGNUM_TARGET_GLES2
.value("DEPTH32F_STENCIL8", GL::RenderbufferFormat::Depth32FStencil8)
#endif
;
py::class_<GL::Renderbuffer>{m, "Renderbuffer", "Renderbuffer"}
.def(py::init(), "Constructor")
.def_property_readonly("id", &GL::Renderbuffer::id, "OpenGL renderbuffer ID")
.def("set_storage", &GL::Renderbuffer::setStorage, "Set renderbuffer storage")
.def("set_storage_multisample", &GL::Renderbuffer::setStorageMultisample, "Set multisample renderbuffer storage");
/* Framebuffers */
py::enum_<GL::FramebufferClear> framebufferClear{m, "FramebufferClear", "Mask for framebuffer clearing"};
framebufferClear

6
src/python/magnum/test/test_gl_gl.py

@ -104,6 +104,12 @@ class Mesh(GLTestCase):
del mesh
self.assertEqual(sys.getrefcount(buffer), buffer_refcount)
class Renderbuffer(GLTestCase):
def test_init(self):
renderbuffer = gl.Renderbuffer()
renderbuffer.set_storage(gl.RenderbufferFormat.RGBA8, (16, 16))
self.assertNotEqual(renderbuffer.id, 0)
class Renderer(GLTestCase):
def test_feature(self):
gl.Renderer.enable(gl.Renderer.Feature.DEPTH_TEST)

Loading…
Cancel
Save