From 0f6fcf759a1a02c1dd8955971d54395e0d529244 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sun, 9 Sep 2012 13:09:20 +0300 Subject: switch to hardware depend batch sizes. but limit max batch size to 1024. --- src/graphicsmanager.cpp | 36 +++++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) (limited to 'src/graphicsmanager.cpp') diff --git a/src/graphicsmanager.cpp b/src/graphicsmanager.cpp index 86814b4be..66502434d 100644 --- a/src/graphicsmanager.cpp +++ b/src/graphicsmanager.cpp @@ -54,7 +54,8 @@ GraphicsManager::GraphicsManager() : mMinor(0), mMajor(0), mPlatformMinor(0), - mPlatformMajor(0) + mPlatformMajor(0), + mMaxVertices(500) { } @@ -80,10 +81,8 @@ bool GraphicsManager::detectGraphics() logger->log("enable opengl mode"); SDL_SetVideoMode(100, 100, 0, SDL_ANYFORMAT | SDL_OPENGL); - setGLVersion(); - initOpenGLFunctions(); - updateExtensions(); - updatePlanformExtensions(); + initOpenGL(); + std::string vendor = getGLString(GL_VENDOR); std::string renderer = getGLString(GL_RENDERER); logger->log("gl vendor: %s", vendor.c_str()); @@ -598,3 +597,30 @@ void GraphicsManager::initOpenGLFunctions() #endif #endif } + +void GraphicsManager::updateLimits() +{ +#ifdef USE_OPENGL + GLint value; + glGetIntegerv(GL_MAX_ELEMENTS_VERTICES, &value); + logger->log("GL_MAX_ELEMENTS_VERTICES: %d", value); + + mMaxVertices = value; + + glGetIntegerv(GL_MAX_ELEMENTS_INDICES, &value); + logger->log("GL_MAX_ELEMENTS_INDICES: %d", value); + if (value < mMaxVertices) + mMaxVertices = value; +#endif +} + +void GraphicsManager::initOpenGL() +{ +#ifdef USE_OPENGL + setGLVersion(); + initOpenGLFunctions(); + updateExtensions(); + updatePlanformExtensions(); + updateLimits(); +#endif +} -- cgit v1.2.3-60-g2f50