Browse Source

python: expose gl.Framebuffer.attach_texture().

Co-authored-by: Vladimír Vondruš <mosra@centrum.cz>
pull/15/head
James Murphy 4 years ago committed by Vladimír Vondruš
parent
commit
6f260b05cd
  1. 7
      src/python/magnum/gl.cpp
  2. 14
      src/python/magnum/test/test_gl_gl.py

7
src/python/magnum/gl.cpp

@ -911,6 +911,13 @@ void gl(py::module_& m) {
before the framebuffer */
pyObjectHolderFor<GL::PyFramebufferHolder>(self).attachments.emplace_back(pyObjectFromInstance(renderbuffer));
}, "Attach renderbuffer to given buffer", py::arg("attachment"), py::arg("renderbuffer"))
.def("attach_texture", [](GL::Framebuffer& self, GL::Framebuffer::BufferAttachment attachment, GL::Texture2D& texture, Int level) {
self.attachTexture(attachment, texture, level);
/* Keep a reference to the texture to avoid it being deleted before
the framebuffer */
pyObjectHolderFor<GL::PyFramebufferHolder>(self).attachments.emplace_back(pyObjectFromInstance(texture));
}, "Attach texture to given buffer", py::arg("attachment"), py::arg("texture"), py::arg("level"))
.def_property_readonly("attachments", [](GL::Framebuffer& self) {
return pyObjectHolderFor<GL::PyFramebufferHolder>(self).attachments;

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

@ -180,6 +180,20 @@ class Framebuffer(GLTestCase):
del framebuffer
self.assertEqual(sys.getrefcount(renderbuffer), renderbuffer_refcount)
def test_attach_texture(self):
texture = gl.Texture2D()
texture.set_storage(levels=1, internal_format=gl.TextureFormat.RGBA8, size=(4, 4))
texture_refcount = sys.getrefcount(texture)
framebuffer = gl.Framebuffer(((0, 0), (4, 4)))
framebuffer.attach_texture(gl.Framebuffer.ColorAttachment(0), texture, 0)
self.assertEqual(len(framebuffer.attachments), 1)
self.assertIs(framebuffer.attachments[0], texture)
self.assertEqual(sys.getrefcount(texture), texture_refcount + 1)
del framebuffer
self.assertEqual(sys.getrefcount(texture), texture_refcount)
def test_read_image(self):
renderbuffer = gl.Renderbuffer()
renderbuffer.set_storage(gl.RenderbufferFormat.RGBA8, (4, 4))

Loading…
Cancel
Save