diff --git a/CMakeLists.txt b/CMakeLists.txt index 7cc750f..b2567d1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,31 +14,31 @@ find_package(OpenGL REQUIRED) find_library(SOIL_LIBRARY SOIL REQUIRED) add_library(FlowEngine STATIC - src/Engine2D/graphics/shader.cpp src/Engine2D/graphics/shader.h - src/Engine2D/utils/fileutils.h - src/Engine2D/graphics/window.cpp src/Engine2D/graphics/window.h - src/Engine2D/graphics/buffer/vertexBuffer.h src/Engine2D/graphics/buffer/vertexBuffer.cpp - src/Engine2D/graphics/buffer/vertexArray.h src/Engine2D/graphics/buffer/vertexArray.cpp - src/Engine2D/graphics/buffer/indexBuffer.h src/Engine2D/graphics/buffer/indexBuffer.cpp - src/Engine2D/graphics/sprite.h src/Engine2D/graphics/sprite.cpp - src/Engine2D/graphics/renderer2d.h src/Engine2D/graphics/renderer2d.cpp - src/Engine2D/graphics/renderable2d.h src/Engine2D/graphics/renderable2d.cpp - src/Engine2D/graphics/batchRenderer2d.h src/Engine2D/graphics/batchRenderer2d.cpp - src/Engine2D/graphics/layers/layer.h src/Engine2D/graphics/layers/layer.cpp - src/Engine2D/graphics/layers/group.h src/Engine2D/graphics/layers/group.cpp - src/Engine2D/graphics/texture.h src/Engine2D/graphics/texture.cpp - src/Engine2D/flow.h src/Engine2D/flow.cpp - src/Engine2D/graphics/textureManager.cpp src/Engine2D/graphics/textureManager.h - src/Engine2D/graphics/mask.h src/Engine2D/utils/math.h - src/Engine2D/factories/MeshFactory.cpp src/Engine2D/factories/MeshFactory.h - src/Engine2D/graphics/frameBuffer.cpp src/Engine2D/graphics/frameBuffer.h - src/Engine2D/graphics/PostEffect.cpp src/Engine2D/graphics/PostEffect.h - src/Engine2D/graphics/PostEffectPass.cpp src/Engine2D/graphics/PostEffectPass.h - src/Engine2D/events/Event.cpp src/Engine2D/events/Event.h - src/Engine2D/events/IEventListener.h src/Engine2D/events/KeyEvent.cpp src/Engine2D/events/KeyEvent.h - src/Engine2D/events/KeyEvent.cpp src/Engine2D/events/KeyEvent.h - src/Engine2D/events/MouseEvent.cpp src/Engine2D/events/MouseEvent.h - src/Engine2D/api/API.cpp src/Engine2D/api/API.h) + src/graphics/shader.cpp src/graphics/shader.h + src/utils/fileutils.h + src/graphics/window.cpp src/graphics/window.h + src/graphics/buffer/vertexBuffer.h src/graphics/buffer/vertexBuffer.cpp + src/graphics/buffer/vertexArray.h src/graphics/buffer/vertexArray.cpp + src/graphics/buffer/indexBuffer.h src/graphics/buffer/indexBuffer.cpp + src/graphics/sprite.h src/graphics/sprite.cpp + src/graphics/renderer2d.h src/graphics/renderer2d.cpp + src/graphics/renderable2d.h src/graphics/renderable2d.cpp + src/graphics/batchRenderer2d.h src/graphics/batchRenderer2d.cpp + src/graphics/layers/layer.h src/graphics/layers/layer.cpp + src/graphics/layers/group.h src/graphics/layers/group.cpp + src/graphics/texture.h src/graphics/texture.cpp + src/flow.h src/flow.cpp + src/graphics/textureManager.cpp src/graphics/textureManager.h + src/graphics/mask.h src/utils/math.h + src/factories/MeshFactory.cpp src/factories/MeshFactory.h + src/graphics/frameBuffer.cpp src/graphics/frameBuffer.h + src/graphics/PostEffect.cpp src/graphics/PostEffect.h + src/graphics/PostEffectPass.cpp src/graphics/PostEffectPass.h + src/events/Event.cpp src/events/Event.h + src/events/IEventListener.h src/events/KeyEvent.cpp src/events/KeyEvent.h + src/events/KeyEvent.cpp src/events/KeyEvent.h + src/events/MouseEvent.cpp src/events/MouseEvent.h + src/api/API.cpp src/api/API.h) add_definitions(-Dinterface=class) diff --git a/src/factories/MeshFactory.cpp b/src/factories/MeshFactory.cpp index 01d0f68..6fd465f 100644 --- a/src/factories/MeshFactory.cpp +++ b/src/factories/MeshFactory.cpp @@ -24,13 +24,13 @@ namespace FlowEngine { namespace Graphics { vertexArray->bind(); API::bindBuffer(GL_ARRAY_BUFFER, bufferID); - API::setBufferData(GL_ARRAY_BUFFER, RENDERER_SPRITE_SIZE, quad, GL_STATIC_DRAW); + API::setBufferData(GL_ARRAY_BUFFER, Renderer2D::SPRITE_BYTE_SIZE, quad, GL_STATIC_DRAW); API::enableVertexAttribute(POSITION); API::enableVertexAttribute(UV); - API::setVertexAttributePointer(POSITION, 3, GL_FLOAT, false, RENDERER_VERTEX_SIZE, offsetof(VertexData, position)); - API::setVertexAttributePointer(UV, 2, GL_FLOAT, false, RENDERER_VERTEX_SIZE, offsetof(VertexData, uv)); + API::setVertexAttributePointer(POSITION, 3, GL_FLOAT, false, Renderer2D::VERTEX_BYTE_SIZE, offsetof(VertexData, position)); + API::setVertexAttributePointer(UV, 2, GL_FLOAT, false, Renderer2D::VERTEX_BYTE_SIZE, offsetof(VertexData, uv)); API::unbindBuffers(GL_ARRAY_BUFFER); vertexArray->unbind(); diff --git a/src/graphics/batchRenderer2d.cpp b/src/graphics/batchRenderer2d.cpp index 5b94e86..f61456a 100644 --- a/src/graphics/batchRenderer2d.cpp +++ b/src/graphics/batchRenderer2d.cpp @@ -10,7 +10,7 @@ namespace FlowEngine { namespace Graphics { mScreenQuad(MeshFactory::generateQuad(0, 0, screenSize.x, screenSize.y)), mPostEffectBuffer(new FrameBuffer(screenSize.x, screenSize.y)) { - mVBO->resize(RENDERER_BUFFER_SIZE); + mVBO->resize(Renderer2D::MAX_VERTEX_BUFFER_BYTE_SIZE); mVBO->setAttribute(POSITION); mVBO->setAttribute(COLOR, 4, true); @@ -21,7 +21,7 @@ namespace FlowEngine { namespace Graphics { mVAO->addBuffer(mVBO); - std::vector indices(RENDERER_INDICES_SIZE); + std::vector indices(Renderer2D::MAX_INDICES_BYTE_SIZE); for(int i=0, offset=0; i < indices.size(); i+=6, offset+=4) { indices[i] = offset; @@ -73,7 +73,7 @@ namespace FlowEngine { namespace Graphics { if (!found) { mTextureSlots.push_back(textureID); textureSlot = mTextureSlots.size(); - if (textureSlot >= RENDERER_MAX_TEXTURES) { + if (textureSlot >= Renderer2D::MAX_TEXTURES) { end(); flush(); begin(); diff --git a/src/graphics/batchRenderer2d.h b/src/graphics/batchRenderer2d.h index f629a8b..2ba6de3 100644 --- a/src/graphics/batchRenderer2d.h +++ b/src/graphics/batchRenderer2d.h @@ -8,13 +8,6 @@ namespace FlowEngine { namespace Graphics { -#define RENDERER_MAX_SPRITES 60000 -#define RENDERER_MAX_TEXTURES 31 -#define RENDERER_VERTEX_SIZE sizeof(VertexData) -#define RENDERER_SPRITE_SIZE RENDERER_VERTEX_SIZE * 4 -#define RENDERER_BUFFER_SIZE RENDERER_SPRITE_SIZE * RENDERER_MAX_SPRITES -#define RENDERER_INDICES_SIZE RENDERER_MAX_SPRITES * 6 - class BatchRenderer2D : public Renderer2D { private: diff --git a/src/graphics/layers/layer.cpp b/src/graphics/layers/layer.cpp index 3265937..8330069 100644 --- a/src/graphics/layers/layer.cpp +++ b/src/graphics/layers/layer.cpp @@ -10,9 +10,9 @@ namespace FlowEngine { namespace Graphics { mShader->uniform("pr_matrix", mProjectionMatrix); std::vector texIds; - for(int i=0; iuniform("textures", texIds.data(), RENDERER_MAX_TEXTURES+1); + mShader->uniform("textures", texIds.data(), Renderer2D::MAX_TEXTURES+1); mShader->disable(); } diff --git a/src/graphics/renderable2d.h b/src/graphics/renderable2d.h index 2864d24..d02e3a5 100644 --- a/src/graphics/renderable2d.h +++ b/src/graphics/renderable2d.h @@ -10,16 +10,6 @@ namespace FlowEngine { namespace Graphics { - struct VertexData - { - glm::vec3 position; - uint color; - glm::vec2 uv; - glm::vec2 maskUv; - float tid; - float mid; - }; - class Renderable2D { protected: diff --git a/src/graphics/renderer2d.h b/src/graphics/renderer2d.h index f712340..b6ec04b 100644 --- a/src/graphics/renderer2d.h +++ b/src/graphics/renderer2d.h @@ -9,8 +9,26 @@ namespace FlowEngine { namespace Graphics { class Renderable2D; + struct VertexData + { + glm::vec3 position; + uint color; + glm::vec2 uv; + glm::vec2 maskUv; + float tid; + float mid; + }; + class Renderer2D { + public: + static const uint VERTEX_BYTE_SIZE = sizeof(VertexData); + static const uint SPRITE_BYTE_SIZE = VERTEX_BYTE_SIZE * 4; + + static const uint MAX_SPRITES = 60000; + static const uint MAX_TEXTURES = 31; + static const uint MAX_VERTEX_BUFFER_BYTE_SIZE = SPRITE_BYTE_SIZE * MAX_SPRITES; + static const uint MAX_INDICES_BYTE_SIZE = MAX_SPRITES * 6; protected: std::vector mTransformationStack; const glm::mat4* mTransformationBack;