summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/graphics.h4
-rw-r--r--src/gui/debugwindow.cpp20
-rw-r--r--src/gui/debugwindow.h3
-rw-r--r--src/normalopenglgraphics.cpp11
-rw-r--r--src/normalopenglgraphics.h9
5 files changed, 44 insertions, 3 deletions
diff --git a/src/graphics.h b/src/graphics.h
index 705a98ff6..03dd5ea2e 100644
--- a/src/graphics.h
+++ b/src/graphics.h
@@ -357,6 +357,10 @@ class Graphics : public gcn::SDLGraphics
virtual unsigned int getDrawCalls() const
{ return 0; }
#endif
+#ifdef DEBUG_BIND_TEXTURE
+ virtual unsigned int getBinds() const
+ { return 0; }
+#endif
int mWidth;
int mHeight;
diff --git a/src/gui/debugwindow.cpp b/src/gui/debugwindow.cpp
index 64ae18c36..4fe4fbe1b 100644
--- a/src/gui/debugwindow.cpp
+++ b/src/gui/debugwindow.cpp
@@ -174,6 +174,11 @@ MapDebugTab::MapDebugTab(const Widget2 *const widget) :
// TRANSLATORS: debug window label
_("Draw calls:"), "?"))),
#endif
+#ifdef DEBUG_BIND_TEXTURE
+ mBindsLabel(new Label(this, strprintf("%s %s",
+ // TRANSLATORS: debug window label
+ _("Texture binds:"), "?"))),
+#endif
// TRANSLATORS: debug window label, frames per second
mFPSLabel(new Label(this, strprintf(_("%d FPS"), 0))),
// TRANSLATORS: debug window label, logic per second
@@ -219,7 +224,8 @@ MapDebugTab::MapDebugTab(const Widget2 *const widget) :
place(0, 7, mParticleCountLabel, 2);
place(0, 8, mMapActorCountLabel, 2);
#ifdef USE_OPENGL
-#if defined (DEBUG_OPENGL_LEAKS) || defined(DEBUG_DRAW_CALLS)
+#if defined (DEBUG_OPENGL_LEAKS) || defined(DEBUG_DRAW_CALLS) \
+ || defined(DEBUG_BIND_TEXTURE)
int n = 9;
#endif
#ifdef DEBUG_OPENGL_LEAKS
@@ -231,6 +237,10 @@ MapDebugTab::MapDebugTab(const Widget2 *const widget) :
#endif
#ifdef DEBUG_DRAW_CALLS
place(0, n, mDrawCallsLabel, 2);
+ n ++;
+#endif
+#ifdef DEBUG_BIND_TEXTURE
+ place(0, n, mBindsLabel, 2);
#endif
#endif
place.getCell().matchColWidth(0, 0);
@@ -300,6 +310,14 @@ void MapDebugTab::logic()
_("Draw calls:"), mainGraphics->getDrawCalls()));
}
#endif
+#ifdef DEBUG_BIND_TEXTURE
+ if (mainGraphics)
+ {
+ mBindsLabel->setCaption(strprintf("%s %d",
+ // TRANSLATORS: debug window label
+ _("Texture binds:"), mainGraphics->getBinds()));
+ }
+#endif
#endif
}
}
diff --git a/src/gui/debugwindow.h b/src/gui/debugwindow.h
index 7fd94f990..26bedf9ce 100644
--- a/src/gui/debugwindow.h
+++ b/src/gui/debugwindow.h
@@ -75,6 +75,9 @@ class MapDebugTab final : public DebugTab
#ifdef DEBUG_DRAW_CALLS
Label *mDrawCallsLabel;
#endif
+#ifdef DEBUG_BIND_TEXTURE
+ Label *mBindsLabel;
+#endif
Label *mFPSLabel;
Label *mLPSLabel;
std::string mFPSText;
diff --git a/src/normalopenglgraphics.cpp b/src/normalopenglgraphics.cpp
index 90ba0a188..af13d0a4f 100644
--- a/src/normalopenglgraphics.cpp
+++ b/src/normalopenglgraphics.cpp
@@ -44,6 +44,10 @@ GLuint NormalOpenGLGraphics::mLastImage = 0;
unsigned int NormalOpenGLGraphics::mDrawCalls = 0;
unsigned int NormalOpenGLGraphics::mLastDrawCalls = 0;
#endif
+#ifdef DEBUG_BIND_TEXTURE
+unsigned int NormalOpenGLGraphics::mBinds = 0;
+unsigned int NormalOpenGLGraphics::mLastBinds = 0;
+#endif
NormalOpenGLGraphics::NormalOpenGLGraphics():
mFloatTexArray(nullptr),
@@ -1028,6 +1032,10 @@ void NormalOpenGLGraphics::updateScreen()
mLastDrawCalls = mDrawCalls;
mDrawCalls = 0;
#endif
+#ifdef DEBUG_BIND_TEXTURE
+ mLastBinds = mBinds;
+ mBinds = 0;
+#endif
SDL_GL_SwapBuffers();
// may be need clear?
// glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
@@ -1361,6 +1369,9 @@ void NormalOpenGLGraphics::bindTexture(const GLenum target,
{
mLastImage = texture;
glBindTexture(target, texture);
+#ifdef DEBUG_BIND_TEXTURE
+ mBinds ++;
+#endif
}
}
diff --git a/src/normalopenglgraphics.h b/src/normalopenglgraphics.h
index 86a380ac8..40a01cd9e 100644
--- a/src/normalopenglgraphics.h
+++ b/src/normalopenglgraphics.h
@@ -195,7 +195,10 @@ class NormalOpenGLGraphics final : public Graphics
static unsigned int mLastDrawCalls;
#endif
-
+#ifdef DEBUG_BIND_TEXTURE
+ virtual unsigned int getBinds() const
+ { return mLastBinds; }
+#endif
static void bindTexture(const GLenum target, const GLuint texture);
static GLuint mLastImage;
@@ -231,7 +234,9 @@ class NormalOpenGLGraphics final : public Graphics
bool mColorAlpha;
#ifdef DEBUG_BIND_TEXTURE
std::string mOldTexture;
- unsigned mOldTextureId;
+ unsigned int mOldTextureId;
+ static unsigned int mBinds;
+ static unsigned int mLastBinds;
#endif
FBOInfo mFbo;
};