Open source Star Ruler 2 source code!
This commit is contained in:
@@ -0,0 +1,164 @@
|
||||
#pragma once
|
||||
#include "scene/node.h"
|
||||
#include "render/render_state.h"
|
||||
#include "render/render_mesh.h"
|
||||
#include "render/texture.h"
|
||||
#include "matrix.h"
|
||||
#include "mesh.h"
|
||||
#include "rect.h"
|
||||
#include "image.h"
|
||||
#include "color.h"
|
||||
#include "vec2.h"
|
||||
#include "line3d.h"
|
||||
|
||||
struct frustum;
|
||||
|
||||
namespace scene {
|
||||
class Node;
|
||||
};
|
||||
|
||||
namespace render {
|
||||
|
||||
enum PrimitiveType {
|
||||
PT_Lines,
|
||||
PT_LineStrip,
|
||||
PT_Triangles,
|
||||
PT_Quads,
|
||||
};
|
||||
|
||||
class Camera;
|
||||
|
||||
class RenderDriver {
|
||||
public:
|
||||
RenderState activeRenderState;
|
||||
scene::Node rootNode;
|
||||
vec3d cam_pos, cam_facing, cam_up;
|
||||
|
||||
virtual bool init() = 0;
|
||||
virtual void reportErrors(const char* context = nullptr) const = 0;
|
||||
|
||||
virtual const RenderState* getLastRenderState() const = 0;
|
||||
|
||||
virtual void setSkybox(const RenderState* mat) = 0;
|
||||
virtual void setSkyboxMesh(const RenderMesh* mesh) = 0;
|
||||
virtual void setScreenSize(int w, int h) = 0;
|
||||
virtual void setFOV(double fov) = 0;
|
||||
virtual void setNearFarPlanes(double near, double far) = 0;
|
||||
|
||||
virtual const frustum& getViewFrustum() const = 0;
|
||||
virtual void setCameraData(Camera& camera) = 0;
|
||||
|
||||
virtual void setDefaultRenderState() = 0;
|
||||
virtual void set2DRenderState() = 0;
|
||||
virtual void switchToRenderState(const RenderState&) = 0;
|
||||
|
||||
virtual void setTransformation(const Matrix&) = 0;
|
||||
virtual void setTransformationAbs(const Matrix&) = 0;
|
||||
virtual void setTransformationIdentity() = 0;
|
||||
virtual void setBBTransform(vec3d pos, double width, double rot) = 0;
|
||||
virtual void resetTransformation() = 0;
|
||||
|
||||
virtual void getInverseView(float* mat3) const = 0;
|
||||
|
||||
virtual void getBillboardVecs(vec3d& upLeft, vec3d& upRight, double rotation = 0) const = 0;
|
||||
virtual void getBillboardVecs(const vec3d& from, vec3d& upLeft, vec3d& upRight, double rotation = 0) const = 0;
|
||||
|
||||
virtual void clearRenderPrepared() = 0;
|
||||
virtual bool isRenderPrepared() = 0;
|
||||
virtual void prepareRender3D(Camera& camera, const recti* clip = 0) = 0;
|
||||
virtual void prepareRender2D() = 0;
|
||||
virtual void renderWorld() = 0;
|
||||
|
||||
virtual RenderMesh* createMesh(const Mesh& mesh) = 0;
|
||||
virtual Shader* createShader() = 0;
|
||||
virtual ShaderProgram* createShaderProgram(const char* vertex_shader, const char* fragment_shader) = 0;
|
||||
virtual Texture* createTexture(Image& image, bool mipmap = true, bool cachePixels = false) = 0;
|
||||
static Texture* createTexture();
|
||||
static Texture* createCubemap();
|
||||
|
||||
virtual Texture* createRenderTarget(const vec2i& size) = 0;
|
||||
virtual void setRenderTarget(Texture* texture, bool intermediate = false) = 0;
|
||||
|
||||
virtual Image* getScreen(int x, int y, int w, int h) = 0;
|
||||
|
||||
virtual void drawFPSGraph(const recti& location) = 0;
|
||||
|
||||
virtual void drawBillboard(vec3d center, double width) = 0;
|
||||
|
||||
virtual void drawLine(line3dd line, Color start, Color end) = 0;
|
||||
|
||||
virtual void drawQuad(
|
||||
const RenderState* mat,
|
||||
const vec2<float>* vertices,
|
||||
const vec2<float>* textureCoords = 0,
|
||||
const Color* color = 0
|
||||
) = 0;
|
||||
|
||||
virtual void drawQuad(
|
||||
const vec2<float>* vertices,
|
||||
const vec2<float>* textureCoords,
|
||||
const Color* colors
|
||||
) = 0;
|
||||
|
||||
virtual void drawQuad(
|
||||
const vec3d* vertices,
|
||||
const vec2<float>* textureCoords,
|
||||
const Color* colors
|
||||
) = 0;
|
||||
|
||||
virtual void drawRectangle(
|
||||
const recti& rectangle,
|
||||
const RenderState* mat,
|
||||
Color color,
|
||||
const recti* clip = 0
|
||||
) = 0;
|
||||
|
||||
virtual void drawRectangle(
|
||||
recti rectangle,
|
||||
const RenderState* mat = 0,
|
||||
const recti* sourceRect = 0,
|
||||
const Color* color = 0,
|
||||
const recti* clip = 0
|
||||
) = 0;
|
||||
|
||||
virtual void drawRectangle(
|
||||
recti rectangle,
|
||||
const RenderState* mat,
|
||||
const recti* sourceRect,
|
||||
const Color* color,
|
||||
const recti* clip,
|
||||
double rotation
|
||||
) = 0;
|
||||
|
||||
virtual void drawBillboard(
|
||||
vec3d center,
|
||||
double width,
|
||||
const RenderState& mat,
|
||||
double rotation,
|
||||
Color* color = 0
|
||||
) = 0;
|
||||
|
||||
virtual void drawBillboard(
|
||||
vec3d center,
|
||||
double width,
|
||||
const RenderState& mat,
|
||||
const recti& source,
|
||||
Color* color = 0
|
||||
) = 0;
|
||||
|
||||
virtual void drawBillboard(
|
||||
vec3d center,
|
||||
double width,
|
||||
const RenderState& mat,
|
||||
const recti& source,
|
||||
double rotation,
|
||||
Color color = Color()
|
||||
) = 0;
|
||||
|
||||
virtual void pushScreenClip(const recti& box) = 0;
|
||||
virtual void popScreenClip() = 0;
|
||||
|
||||
virtual ~RenderDriver() {}
|
||||
};
|
||||
|
||||
};
|
||||
Reference in New Issue
Block a user