diff options
author | chai <chaifix@163.com> | 2018-12-24 08:15:13 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2018-12-24 08:15:13 +0800 |
commit | 6e64f600b662bbf5dd6cb63661504b67b60cddcd (patch) | |
tree | 23d4a4f7e5e837715af63d9077e51373b0abc188 /src/libjin/graphics/je_gl.cpp | |
parent | 145e0752c702fa354fb78d3f30fa4b8ec44bfe7b (diff) |
*stats
Diffstat (limited to 'src/libjin/graphics/je_gl.cpp')
-rw-r--r-- | src/libjin/graphics/je_gl.cpp | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/src/libjin/graphics/je_gl.cpp b/src/libjin/graphics/je_gl.cpp index 7ef4ee0..24b0a48 100644 --- a/src/libjin/graphics/je_gl.cpp +++ b/src/libjin/graphics/je_gl.cpp @@ -23,6 +23,7 @@ namespace JinEngine OpenGL::OpenGL() : mBlendMode(BlendMode::NONE) { + memset(&mStats, 0, sizeof(mStats)); memset(&mColor, 0xff, sizeof(mColor)); // Set default modelview matrix. mModelViewMatrices.push_back(Matrix()); @@ -102,6 +103,7 @@ namespace JinEngine void OpenGL::drawArrays(GLenum mode, GLint first, GLsizei count) { glDrawArrays(mode, first, count); + ++mStats.drawCalls; } void OpenGL::drawBuffer(GLenum mode) @@ -278,10 +280,12 @@ namespace JinEngine void OpenGL::useShader(Shaders::Shader* shader) { - if (shader) + if (mShader != shader && shader) { glUseProgram(shader->getGLProgramID()); mShader = shader; + + ++mStats.shaderSwitches; } } @@ -301,7 +305,7 @@ namespace JinEngine void OpenGL::bindCanvas(Canvas* canvas) { - if (canvas) + if (mCanvas != canvas && canvas) { GLuint fbo = canvas->getGLFrameBuffer(); gl.bindFrameBuffer(fbo); @@ -311,6 +315,8 @@ namespace JinEngine gl.setProjectionMatrix(0, w, 0, h, -1, 1); mCanvas = canvas; + + ++mStats.canvasSwitches; } } @@ -344,8 +350,12 @@ namespace JinEngine void OpenGL::setFont(Fonts::Font* font) { - if (font) + if (mFont != font && font) + { mFont = font; + + ++mStats.fontSwitches; + } } void OpenGL::unsetFont() @@ -358,5 +368,18 @@ namespace JinEngine return mFont; } + void OpenGL::resetStats() + { + mStats.drawCalls = 0; + mStats.canvasSwitches = 0; + mStats.shaderSwitches = 0; + mStats.fontSwitches = 0; + } + + OpenGL::Stats& OpenGL::getStats() + { + return mStats; + } + } // namespace Graphics } // namespace JinEngine
\ No newline at end of file |