add draw types
This commit is contained in:
@@ -5,17 +5,40 @@
|
||||
|
||||
#include "extratools.h"
|
||||
|
||||
#include "utils/Renderer/RenderTarget.h"
|
||||
|
||||
namespace Archimedes {
|
||||
|
||||
class Object {
|
||||
|
||||
public:
|
||||
Object() {};
|
||||
Object(RenderTarget rt) : mesh(rt) {};
|
||||
|
||||
Object(VertexBuffer vb, IndexArray ia, VertexLayout vl, Shader s, glm::mat4 t)
|
||||
: mesh(vb, ia, vl, s), worldTransform(t) {}
|
||||
|
||||
Object() {}
|
||||
|
||||
~Object() {};
|
||||
|
||||
///scales an object absolutely
|
||||
void scaleTo() {}
|
||||
void scaleRel() {}
|
||||
|
||||
void moveTo() {}
|
||||
void moveRel() {}
|
||||
|
||||
void rotateTo() {}
|
||||
void rotateRel() {}
|
||||
|
||||
private:
|
||||
|
||||
glm::vec3 position = glm::vec3(0);
|
||||
glm::vec3 rotation = glm::vec3(0);
|
||||
|
||||
glm::mat4 worldTransform = glm::mat4(1.0f);
|
||||
|
||||
RenderTarget mesh;
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
@@ -12,6 +12,13 @@ namespace Archimedes {
|
||||
class Renderer {
|
||||
|
||||
public:
|
||||
|
||||
enum class RenderMode {
|
||||
Triangles,
|
||||
Lines,
|
||||
Points
|
||||
};
|
||||
|
||||
int w, h;
|
||||
|
||||
glm::vec4 clearColor = { 0.0f, 0.0f, 0.0f, 1.0f };
|
||||
@@ -37,7 +44,7 @@ namespace Archimedes {
|
||||
|
||||
virtual void useRenderTarget(RenderTarget& rt) = 0;
|
||||
|
||||
virtual void draw(const RenderTarget&) = 0;
|
||||
virtual void draw(const RenderTarget& rt, RenderMode mode = RenderMode::Triangles) = 0;
|
||||
|
||||
virtual Renderer* getRendererImpl() = 0;
|
||||
|
||||
|
||||
@@ -173,6 +173,7 @@ namespace Archimedes {
|
||||
return rt;
|
||||
};
|
||||
|
||||
|
||||
void useRenderTarget(RenderTarget& rt) override {
|
||||
|
||||
glGenVertexArrays(1, &rt.vertexArray.id);
|
||||
@@ -202,7 +203,7 @@ namespace Archimedes {
|
||||
|
||||
};
|
||||
|
||||
void draw(const RenderTarget& rt) override {
|
||||
void draw(const RenderTarget& rt, RenderMode mode) override {
|
||||
|
||||
glUseProgram(rt.shader.id);
|
||||
|
||||
@@ -218,7 +219,17 @@ namespace Archimedes {
|
||||
|
||||
glBindVertexArray(rt.vertexArray.id);
|
||||
|
||||
glDrawElements(GL_TRIANGLES, rt.indexArray.getCount(), GL_UNSIGNED_INT, nullptr);
|
||||
switch(mode) {
|
||||
case RenderMode::Triangles:
|
||||
glDrawElements(GL_TRIANGLES, rt.indexArray.getCount(), GL_UNSIGNED_INT, nullptr);
|
||||
case RenderMode::Lines:
|
||||
glDrawElements(GL_LINES, rt.indexArray.getCount(), GL_UNSIGNED_INT, nullptr);
|
||||
case RenderMode::Points:
|
||||
glDrawElements(GL_POINTS, rt.indexArray.getCount(), GL_UNSIGNED_INT, nullptr);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
glBindVertexArray(0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user