Make gfx::renderbuffer::storage support template pixel types

This commit is contained in:
Nikita Lisitsa 2021-03-06 18:30:35 +03:00
parent f40d98cb2f
commit 9dc95c797c
2 changed files with 10 additions and 3 deletions

View file

@ -1,6 +1,7 @@
#pragma once #pragma once
#include <psemek/gfx/gl.hpp> #include <psemek/gfx/gl.hpp>
#include <psemek/gfx/pixel.hpp>
#include <cstddef> #include <cstddef>
@ -27,7 +28,13 @@ namespace psemek::gfx
void reset(); void reset();
void storage(GLenum internal_format, GLsizei width, GLsizei height); void storage(GLenum internal_format, geom::vector<std::size_t, 2> const & size);
template <typename Pixel>
void storage(geom::vector<std::size_t, 2> const & size)
{
storage(pixel_traits<Pixel>::internal_format, size);
}
private: private:
GLuint id_; GLuint id_;

View file

@ -47,10 +47,10 @@ namespace psemek::gfx
id_ = 0; id_ = 0;
} }
void renderbuffer::storage(GLenum internal_format, GLsizei width, GLsizei height) void renderbuffer::storage(GLenum internal_format, geom::vector<std::size_t, 2> const & size)
{ {
bind(); bind();
gl::RenderbufferStorage(gl::RENDERBUFFER, internal_format, width, height); gl::RenderbufferStorage(gl::RENDERBUFFER, internal_format, size[0], size[1]);
} }
renderbuffer::renderbuffer(std::nullptr_t) renderbuffer::renderbuffer(std::nullptr_t)