WIP: Renderer
This commit is contained in:
13
render/GlResource.cc
Normal file
13
render/GlResource.cc
Normal file
@@ -0,0 +1,13 @@
|
||||
#include <glbinding/gl/gl.h>
|
||||
|
||||
#include "GlResource.hh"
|
||||
|
||||
using namespace gl;
|
||||
|
||||
void TextureDeleter::operator()(gl::GLuint tex) const {
|
||||
glDeleteTextures(1, &tex);
|
||||
}
|
||||
|
||||
void TextureDeleter::operator() (gl::GLsizei count, gl::GLuint tex[]) const {
|
||||
glDeleteTextures(count, tex);
|
||||
}
|
||||
71
render/GlResource.hh
Normal file
71
render/GlResource.hh
Normal file
@@ -0,0 +1,71 @@
|
||||
#ifndef WC3RE_RENDER_GLRESOURCE_HH__
|
||||
#define WC3RE_RENDER_GLRESOURCE_HH__
|
||||
|
||||
#include <glbinding/gl/types.h>
|
||||
|
||||
struct TextureDeleter {
|
||||
void operator() (gl::GLuint tex) const;
|
||||
void operator() (gl::GLsizei count, gl::GLuint tex[]) const;
|
||||
};
|
||||
|
||||
struct FramebufferDeleter {
|
||||
void operator() (gl::GLuint tex) const;
|
||||
};
|
||||
|
||||
struct ShaderDeleter {
|
||||
void operator() (gl::GLuint tex) const;
|
||||
};
|
||||
|
||||
struct ProgramDeleter {
|
||||
void operator() (gl::GLuint tex) const;
|
||||
};
|
||||
|
||||
struct VertexArrayDeleter {
|
||||
void operator() (gl::GLuint tex) const;
|
||||
};
|
||||
|
||||
struct BufferDeleter {
|
||||
void operator() (gl::GLuint tex) const;
|
||||
};
|
||||
|
||||
template<class Deleter, class Handle = gl::GLuint>
|
||||
class GlResource {
|
||||
public:
|
||||
GlResource()
|
||||
: handle_() {
|
||||
}
|
||||
|
||||
GlResource(Handle handle)
|
||||
: handle_(handle) {
|
||||
}
|
||||
|
||||
~GlResource() {
|
||||
if (handle_)
|
||||
Deleter()(handle_);
|
||||
handle_ = Handle();
|
||||
}
|
||||
|
||||
operator Handle() const {
|
||||
return handle_;
|
||||
}
|
||||
|
||||
Handle& get() {
|
||||
return handle_;
|
||||
}
|
||||
|
||||
Handle const& get() const {
|
||||
return handle_;
|
||||
}
|
||||
|
||||
private:
|
||||
Handle handle_;
|
||||
};
|
||||
|
||||
using TextureResource = GlResource<TextureDeleter>;
|
||||
using FramebufferResource = GlResource<FramebufferDeleter>;
|
||||
using ShaderResource = GlResource<ShaderDeleter>;
|
||||
using ProgramResource = GlResource<ProgramDeleter>;
|
||||
using VertexArrayResource = GlResource<VertexArrayDeleter>;
|
||||
using BufferResource = GlResource<BufferDeleter>;
|
||||
|
||||
#endif
|
||||
12
render/Renderer.cc
Normal file
12
render/Renderer.cc
Normal file
@@ -0,0 +1,12 @@
|
||||
#include <glbinding/gl/gl.h>
|
||||
|
||||
#include "Renderer.hh"
|
||||
#include "GlResource.hh"
|
||||
|
||||
using namespace gl;
|
||||
|
||||
Renderer::Renderer()
|
||||
{
|
||||
TextureResource testTex;
|
||||
glGenTextures(1, &testTex.get());
|
||||
}
|
||||
14
render/Renderer.hh
Normal file
14
render/Renderer.hh
Normal file
@@ -0,0 +1,14 @@
|
||||
#ifndef WC3RE_RENDER_RENDERER_HH__
|
||||
#define WC3RE_RENDER_RENDERER_HH__
|
||||
|
||||
#include <SDL2/SDL.h>
|
||||
|
||||
class Renderer {
|
||||
public:
|
||||
Renderer();
|
||||
|
||||
private:
|
||||
SDL_Window *win;
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user