void Graphics::init() { g_logger.info(stdext::format("GPU %s", glGetString(GL_RENDERER))); g_logger.info(stdext::format("OpenGL %s", glGetString(GL_VERSION))); #if defined(WIN32) && defined(DIRECTX) g_painterDX9 = new PainterDX9; #endif #if OPENGL_ES==2 g_painterOGL2 = new PainterOGL2; #elif OPENGL_ES==1 g_painterOGL1 = new PainterOGL1; #else // init GL extensions GLenum err = glewInit(); if(err != GLEW_OK) g_logger.fatal(stdext::format("Unable to init GLEW: %s", glewGetErrorString(err))); // overwrite framebuffer API if needed if(GLEW_EXT_framebuffer_object && !GLEW_ARB_framebuffer_object) { glGenFramebuffers = glGenFramebuffersEXT; glDeleteFramebuffers = glDeleteFramebuffersEXT; glBindFramebuffer = glBindFramebufferEXT; glFramebufferTexture2D = glFramebufferTexture2DEXT; glCheckFramebufferStatus = glCheckFramebufferStatusEXT; glGenerateMipmap = glGenerateMipmapEXT; } // opengl 1 is always supported g_painterOGL1 = new PainterOGL1; // opengl 2 is only supported in newer hardware if(GLEW_VERSION_2_0) g_painterOGL2 = new PainterOGL2; #endif // blending is always enabled glEnable(GL_BLEND); // determine max texture size int maxTextureSize = 0; glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTextureSize); if(m_maxTextureSize == -1 || m_maxTextureSize > maxTextureSize) m_maxTextureSize = maxTextureSize; if(Size(m_maxTextureSize,m_maxTextureSize) < g_window.getDisplaySize()) m_cacheBackbuffer = false; m_alphaBits = 0; glGetIntegerv(GL_ALPHA_BITS, &m_alphaBits); m_ok = true; selectPainterEngine(m_prefferedPainterEngine); g_textures.init(); g_framebuffers.init(); }
void Graphics::init() { logInfo("GPU ", glGetString(GL_RENDERER)); logInfo("OpenGL ", glGetString(GL_VERSION)); #if OPENGL_ES==2 g_painterOGL2 = new PainterOGL2; #elif OPENGL_ES==1 g_painterOGL1 = new PainterOGL1; #else // init GL extensions GLenum err = glewInit(); if(err != GLEW_OK) logFatal("Unable to init GLEW: ", glewGetErrorString(err)); // overwrite framebuffer API if needed if(GLEW_EXT_framebuffer_object && !GLEW_ARB_framebuffer_object) { glGenFramebuffers = glGenFramebuffersEXT; glDeleteFramebuffers = glDeleteFramebuffersEXT; glBindFramebuffer = glBindFramebufferEXT; glFramebufferTexture2D = glFramebufferTexture2DEXT; glCheckFramebufferStatus = glCheckFramebufferStatusEXT; glGenerateMipmap = glGenerateMipmapEXT; } // opengl 1 is always supported g_painterOGL1 = new PainterOGL1; // opengl 2 is only supported in newer hardware if(GLEW_VERSION_2_0) g_painterOGL2 = new PainterOGL2; #endif // blending is always enabled glEnable(GL_BLEND); // determine max texture size static GLint maxTextureSize = -1; if(maxTextureSize == -1) glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTextureSize); if(m_maxTextureSize == -1 || m_maxTextureSize > maxTextureSize) m_maxTextureSize = maxTextureSize; selectPainterEngine(m_prefferedPainterEngine); m_emptyTexture = TexturePtr(new Texture); }