/** Copyright: Copyright (c) 2013-2018 Andrey Penechko. License: $(WEB boost.org/LICENSE_1_0.txt, Boost License 1.0). Authors: Andrey Penechko. */ module voxelman.graphics.irenderer; import voxelman.math; import voxelman.graphics.texture; import voxelman.graphics.shaderprogram; public import dlib.image.image : SuperImage; interface IRenderer { void alphaBlending(bool value); void rectClipping(bool value); void depthWrite(bool value); void depthTest(bool value); void faceCulling(bool value); void faceCullMode(FaceCullMode mode); void wireFrameMode(bool value); void setViewport(ivec2 pos, ivec2 size); void setClipRect(irect rect); void setClearColor(ubyte r, ubyte g, ubyte b, ubyte a = 255); SuperImage loadImage(string filename); Texture createTexture(SuperImage image); ShaderProgram createShaderProgram(string vertexSource, string fragmentSource); ivec2 framebufferSize() @property; void flush(); void close(); } import voxelman.graphics.gl; enum FaceCullMode { front = GL_FRONT, back = GL_BACK, frontAndBack = GL_FRONT_AND_BACK }