bool CRenderSystemGL::InitRenderSystem() { m_bVSync = false; m_iVSyncMode = 0; m_iSwapStamp = 0; m_iSwapTime = 0; m_iSwapRate = 0; m_bVsyncInit = false; m_maxTextureSize = 2048; m_renderCaps = 0; m_RenderExtensions = " "; m_RenderExtensions += (const char*) glGetString(GL_EXTENSIONS); m_RenderExtensions += " "; LogGraphicsInfo(); // Get the GL version number m_RenderVersionMajor = 0; m_RenderVersionMinor = 0; const char* ver = (const char*)glGetString(GL_VERSION); if (ver != 0) { sscanf(ver, "%d.%d", &m_RenderVersionMajor, &m_RenderVersionMinor); m_RenderVersion = ver; } if (IsExtSupported("GL_ARB_shading_language_100")) { ver = (const char*)glGetString(GL_SHADING_LANGUAGE_VERSION); if (ver) { sscanf(ver, "%d.%d", &m_glslMajor, &m_glslMinor); } else { m_glslMajor = 1; m_glslMinor = 0; } } // Get our driver vendor and renderer const char* tmpVendor = (const char*) glGetString(GL_VENDOR); m_RenderVendor.clear(); if (tmpVendor != NULL) m_RenderVendor = tmpVendor; const char* tmpRenderer = (const char*) glGetString(GL_RENDERER); m_RenderRenderer.clear(); if (tmpRenderer != NULL) m_RenderRenderer = tmpRenderer; // grab our capabilities if (IsExtSupported("GL_EXT_texture_compression_s3tc")) m_renderCaps |= RENDER_CAPS_DXT; if (IsExtSupported("GL_ARB_texture_non_power_of_two")) { m_renderCaps |= RENDER_CAPS_NPOT; if (m_renderCaps & RENDER_CAPS_DXT) m_renderCaps |= RENDER_CAPS_DXT_NPOT; } //Check OpenGL quirks and revert m_renderCaps as needed CheckOpenGLQuirks(); m_bRenderCreated = true; return true; }
bool CRenderSystemGL::InitRenderSystem() { m_bVSync = false; m_iVSyncMode = 0; m_iSwapStamp = 0; m_iSwapTime = 0; m_iSwapRate = 0; m_bVsyncInit = false; m_maxTextureSize = 2048; m_renderCaps = 0; // init glew library GLenum err = glewInit(); if (GLEW_OK != err) { // Problem: glewInit failed, something is seriously wrong CLog::Log(LOGERROR, "InitRenderSystem() glewInit returned %i: %s", err, glewGetErrorString(err)); return false; } // Get the GL version number m_RenderVersionMajor = 0; m_RenderVersionMinor = 0; const char* ver = (const char*)glGetString(GL_VERSION); if (ver != 0) { sscanf(ver, "%d.%d", &m_RenderVersionMajor, &m_RenderVersionMinor); m_RenderVersion = ver; } if (glewIsSupported("GL_ARB_shading_language_100")) { ver = (const char*)glGetString(GL_SHADING_LANGUAGE_VERSION); if (ver) { sscanf(ver, "%d.%d", &m_glslMajor, &m_glslMinor); } else { m_glslMajor = 1; m_glslMinor = 0; } } // Get our driver vendor and renderer m_RenderVendor = (const char*) glGetString(GL_VENDOR); m_RenderRenderer = (const char*) glGetString(GL_RENDERER); // grab our capabilities if (glewIsSupported("GL_EXT_texture_compression_s3tc")) m_renderCaps |= RENDER_CAPS_DXT; if (glewIsSupported("GL_ARB_texture_non_power_of_two")) { m_renderCaps |= RENDER_CAPS_NPOT; if (m_renderCaps & RENDER_CAPS_DXT) m_renderCaps |= RENDER_CAPS_DXT_NPOT; } //Check OpenGL quirks and revert m_renderCaps as needed CheckOpenGLQuirks(); m_RenderExtensions = " "; m_RenderExtensions += (const char*) glGetString(GL_EXTENSIONS); m_RenderExtensions += " "; LogGraphicsInfo(); m_bRenderCreated = true; return true; }
bool CRenderSystemGL::InitRenderSystem() { m_bVSync = false; m_bVsyncInit = false; m_maxTextureSize = 2048; m_renderCaps = 0; // Get the GL version number m_RenderVersionMajor = 0; m_RenderVersionMinor = 0; const char* ver = (const char*)glGetString(GL_VERSION); if (ver != 0) { sscanf(ver, "%d.%d", &m_RenderVersionMajor, &m_RenderVersionMinor); m_RenderVersion = ver; } m_RenderExtensions = " "; if (m_RenderVersionMajor > 3 || (m_RenderVersionMajor == 3 && m_RenderVersionMinor >= 2)) { GLint n; glGetIntegerv(GL_NUM_EXTENSIONS, &n); if (n > 0) { GLint i; for (i = 0; i < n; i++) { m_RenderExtensions += (const char*)glGetStringi(GL_EXTENSIONS, i); m_RenderExtensions += " "; } } } else { m_RenderExtensions += (const char*) glGetString(GL_EXTENSIONS); } m_RenderExtensions += " "; if (IsExtSupported("GL_ARB_shading_language_100")) { ver = (const char*)glGetString(GL_SHADING_LANGUAGE_VERSION); if (ver) { sscanf(ver, "%d.%d", &m_glslMajor, &m_glslMinor); } else { m_glslMajor = 1; m_glslMinor = 0; } } LogGraphicsInfo(); // Get our driver vendor and renderer const char* tmpVendor = (const char*) glGetString(GL_VENDOR); m_RenderVendor.clear(); if (tmpVendor != NULL) m_RenderVendor = tmpVendor; const char* tmpRenderer = (const char*) glGetString(GL_RENDERER); m_RenderRenderer.clear(); if (tmpRenderer != NULL) m_RenderRenderer = tmpRenderer; // grab our capabilities if (IsExtSupported("GL_EXT_texture_compression_s3tc")) m_renderCaps |= RENDER_CAPS_DXT; if (IsExtSupported("GL_ARB_texture_non_power_of_two")) { m_renderCaps |= RENDER_CAPS_NPOT; if (m_renderCaps & RENDER_CAPS_DXT) m_renderCaps |= RENDER_CAPS_DXT_NPOT; } //Check OpenGL quirks and revert m_renderCaps as needed CheckOpenGLQuirks(); m_bRenderCreated = true; if (m_RenderVersionMajor > 3 || (m_RenderVersionMajor == 3 && m_RenderVersionMinor >= 2)) { glGenVertexArrays(1, &m_vertexArray); glBindVertexArray(m_vertexArray); } InitialiseShader(); return true; }