aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/graphics/je_gl.cpp
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2018-12-24 08:15:13 +0800
committerchai <chaifix@163.com>2018-12-24 08:15:13 +0800
commit6e64f600b662bbf5dd6cb63661504b67b60cddcd (patch)
tree23d4a4f7e5e837715af63d9077e51373b0abc188 /src/libjin/graphics/je_gl.cpp
parent145e0752c702fa354fb78d3f30fa4b8ec44bfe7b (diff)
*stats
Diffstat (limited to 'src/libjin/graphics/je_gl.cpp')
-rw-r--r--src/libjin/graphics/je_gl.cpp29
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