WIP: Renderer
This commit is contained in:
4
Makefile
4
Makefile
@@ -2,6 +2,8 @@ CXX=g++
|
|||||||
CXXOPTS=-Og -ggdb -fvar-tracking-assignments -Wall -Wextra -pedantic -std=c++14 -march=native -fstack-protector-strong --param=ssp-buffer-size=4 -flto
|
CXXOPTS=-Og -ggdb -fvar-tracking-assignments -Wall -Wextra -pedantic -std=c++14 -march=native -fstack-protector-strong --param=ssp-buffer-size=4 -flto
|
||||||
LDOPTS=-Wl,--sort-common,--as-needed
|
LDOPTS=-Wl,--sort-common,--as-needed
|
||||||
|
|
||||||
|
render_CXXSRCS ::= render/Renderer.cc render/GlResource.cc
|
||||||
|
|
||||||
iffexplore_CXXSRCS ::= iffexplore.cc IffFile.cc util.cc exceptions.cc
|
iffexplore_CXXSRCS ::= iffexplore.cc IffFile.cc util.cc exceptions.cc
|
||||||
iffexplore_LIBS ::=
|
iffexplore_LIBS ::=
|
||||||
|
|
||||||
@@ -11,7 +13,7 @@ treexplore_LIBS ::=
|
|||||||
font2png_CXXSRCS ::= font2png.cc
|
font2png_CXXSRCS ::= font2png.cc
|
||||||
font2png_LIBS ::= -lpng
|
font2png_LIBS ::= -lpng
|
||||||
|
|
||||||
mvedecode_CXXSRCS ::= mvedecode.cc TreFile.cc IffFile.cc util.cc MveDecoder.cc exceptions.cc decompress.cc
|
mvedecode_CXXSRCS ::= mvedecode.cc TreFile.cc IffFile.cc util.cc MveDecoder.cc exceptions.cc decompress.cc $(render_CXXSRCS)
|
||||||
mvedecode_LIBS ::= -lSDL2
|
mvedecode_LIBS ::= -lSDL2
|
||||||
|
|
||||||
progs ::= iffexplore treexplore mvedecode
|
progs ::= iffexplore treexplore mvedecode
|
||||||
|
|||||||
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