From 906332df8779bca71641c6bcdc84d04a1de6d2eb Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Fri, 23 May 2014 12:07:25 +0300 Subject: Add functions for resize batch size (OpenGL). --- src/render/graphics.cpp | 2 +- src/render/graphics.h | 5 ++++- src/render/mobileopenglgraphics.cpp | 26 ++++++++++++++++++++------ src/render/normalopenglgraphics.cpp | 32 ++++++++++++++++++++++++-------- src/render/nullopenglgraphics.cpp | 8 ++++++-- src/render/openglgraphicsdef.hpp | 2 ++ src/render/openglgraphicsdefadvanced.hpp | 4 +++- src/render/safeopenglgraphics.cpp | 4 ++++ 8 files changed, 64 insertions(+), 19 deletions(-) (limited to 'src/render') diff --git a/src/render/graphics.cpp b/src/render/graphics.cpp index baceeacc1..44307add7 100644 --- a/src/render/graphics.cpp +++ b/src/render/graphics.cpp @@ -293,7 +293,7 @@ bool Graphics::setOpenGLMode() (gotDoubleBuffer ? "with" : "without")); graphicsManager.initOpenGL(); - initArrays(); + initArrays(graphicsManager.getMaxVertices()); graphicsManager.updateTextureFormat(); updateMemoryInfo(); diff --git a/src/render/graphics.h b/src/render/graphics.h index 58e08888a..90029717e 100644 --- a/src/render/graphics.h +++ b/src/render/graphics.h @@ -295,7 +295,7 @@ class Graphics const std::string &getName() const A_WARN_UNUSED { return mName; } - virtual void initArrays() + virtual void initArrays(const int vertCount A_UNUSED) { } virtual void setColor(const Color &color) @@ -447,6 +447,9 @@ class Graphics virtual void clearScreen() const { } + virtual void deleteArrays() + { } + int mWidth; int mHeight; int mActualWidth; diff --git a/src/render/mobileopenglgraphics.cpp b/src/render/mobileopenglgraphics.cpp index 8150c4f66..34e5c334c 100644 --- a/src/render/mobileopenglgraphics.cpp +++ b/src/render/mobileopenglgraphics.cpp @@ -99,15 +99,12 @@ MobileOpenGLGraphics::MobileOpenGLGraphics(): MobileOpenGLGraphics::~MobileOpenGLGraphics() { - delete [] mFloatTexArray; - delete [] mShortVertArray; - delete [] mFloatTexArrayCached; - delete [] mShortVertArrayCached; + deleteArraysInternal(); } -void MobileOpenGLGraphics::initArrays() +void MobileOpenGLGraphics::initArrays(const int vertCount) { - mMaxVertices = graphicsManager.getMaxVertices(); + mMaxVertices = vertCount; if (mMaxVertices < 500) mMaxVertices = 500; else if (mMaxVertices > 1024) @@ -126,6 +123,23 @@ void MobileOpenGLGraphics::initArrays() mShortVertArrayCached = new GLshort[sz]; } +void MobileOpenGLGraphics::deleteArrays() +{ + deleteArraysInternal(); +} + +void MobileOpenGLGraphics::deleteArraysInternal() +{ + delete [] mFloatTexArray; + mFloatTexArray = nullptr; + delete [] mShortVertArray; + mShortVertArray = nullptr; + delete [] mFloatTexArrayCached; + mFloatTexArrayCached = nullptr; + delete [] mShortVertArrayCached; + mShortVertArrayCached = nullptr; +} + bool MobileOpenGLGraphics::setVideoMode(const int w, const int h, const int scale, const int bpp, diff --git a/src/render/normalopenglgraphics.cpp b/src/render/normalopenglgraphics.cpp index 75064a435..c7b01c4d2 100644 --- a/src/render/normalopenglgraphics.cpp +++ b/src/render/normalopenglgraphics.cpp @@ -115,17 +115,12 @@ NormalOpenGLGraphics::NormalOpenGLGraphics(): NormalOpenGLGraphics::~NormalOpenGLGraphics() { - delete [] mFloatTexArray; - delete [] mIntTexArray; - delete [] mIntVertArray; - delete [] mFloatTexArrayCached; - delete [] mIntTexArrayCached; - delete [] mIntVertArrayCached; + deleteArraysInternal(); } -void NormalOpenGLGraphics::initArrays() +void NormalOpenGLGraphics::initArrays(const int vertCount) { - mMaxVertices = graphicsManager.getMaxVertices(); + mMaxVertices = vertCount; if (mMaxVertices < 500) mMaxVertices = 500; else if (mMaxVertices > 1024) @@ -148,6 +143,27 @@ void NormalOpenGLGraphics::initArrays() mIntVertArrayCached = new GLint[sz]; } +void NormalOpenGLGraphics::deleteArrays() +{ + deleteArraysInternal(); +} + +void NormalOpenGLGraphics::deleteArraysInternal() +{ + delete [] mFloatTexArray; + mFloatTexArray = nullptr; + delete [] mIntTexArray; + mIntTexArray = nullptr; + delete [] mIntVertArray; + mIntVertArray = nullptr; + delete [] mFloatTexArrayCached; + mFloatTexArrayCached = nullptr; + delete [] mIntTexArrayCached; + mIntTexArrayCached = nullptr; + delete [] mIntVertArrayCached; + mIntVertArrayCached = nullptr; +} + bool NormalOpenGLGraphics::setVideoMode(const int w, const int h, const int scale, const int bpp, diff --git a/src/render/nullopenglgraphics.cpp b/src/render/nullopenglgraphics.cpp index ca6fa1660..4498ed9c6 100644 --- a/src/render/nullopenglgraphics.cpp +++ b/src/render/nullopenglgraphics.cpp @@ -71,9 +71,9 @@ NullOpenGLGraphics::~NullOpenGLGraphics() delete [] mIntVertArray; } -void NullOpenGLGraphics::initArrays() +void NullOpenGLGraphics::initArrays(const int vertCount) { - mMaxVertices = graphicsManager.getMaxVertices(); + mMaxVertices = vertCount; if (mMaxVertices < 500) mMaxVertices = 500; else if (mMaxVertices > 1024) @@ -90,6 +90,10 @@ void NullOpenGLGraphics::initArrays() mIntVertArray = new GLint[sz]; } +void NullOpenGLGraphics::deleteArrays() +{ +} + bool NullOpenGLGraphics::setVideoMode(const int w, const int h, const int scale, const int bpp, diff --git a/src/render/openglgraphicsdef.hpp b/src/render/openglgraphicsdef.hpp index 1df90e3ee..e99c4cc62 100644 --- a/src/render/openglgraphicsdef.hpp +++ b/src/render/openglgraphicsdef.hpp @@ -51,6 +51,8 @@ public: void clearScreen() const override final; + void deleteArrays() override final; + static void bindTexture(const GLenum target, const GLuint texture); static GLuint mLastImage; diff --git a/src/render/openglgraphicsdefadvanced.hpp b/src/render/openglgraphicsdefadvanced.hpp index 07c706af3..bb45035c3 100644 --- a/src/render/openglgraphicsdefadvanced.hpp +++ b/src/render/openglgraphicsdefadvanced.hpp @@ -23,7 +23,7 @@ public: inline void drawVertexes(const NormalOpenGLGraphicsVertexes &ogl); - void initArrays() override final; + void initArrays(const int vertCount) override final; #ifdef DEBUG_DRAW_CALLS unsigned int getDrawCalls() const @@ -36,3 +36,5 @@ public: protected: void debugBindTexture(const Image *const image); + + void deleteArraysInternal(); diff --git a/src/render/safeopenglgraphics.cpp b/src/render/safeopenglgraphics.cpp index 236e09841..bc22b3c69 100644 --- a/src/render/safeopenglgraphics.cpp +++ b/src/render/safeopenglgraphics.cpp @@ -56,6 +56,10 @@ SafeOpenGLGraphics::~SafeOpenGLGraphics() { } +void SafeOpenGLGraphics::deleteArrays() +{ +} + bool SafeOpenGLGraphics::setVideoMode(const int w, const int h, const int scale, const int bpp, -- cgit v1.2.3-60-g2f50