This is an automated email from the git hooks/post-receive script. odyx pushed a commit to branch upstream/latest in repository colobot.
commit d33ddae15a8f3d5d8e33cb0f4428b6a4632a2b5d Author: Tomasz Kapuściński <tomaszka...@gmail.com> Date: Fri May 29 12:39:14 2015 +0200 Added warnings and information what shader files are not available --- src/graphics/opengl/gl21device.cpp | 41 +++++++++++++++++++++++--------------- src/graphics/opengl/gl33device.cpp | 11 ++++++++-- 2 files changed, 34 insertions(+), 18 deletions(-) diff --git a/src/graphics/opengl/gl21device.cpp b/src/graphics/opengl/gl21device.cpp index 555fede..c4a6067 100644 --- a/src/graphics/opengl/gl21device.cpp +++ b/src/graphics/opengl/gl21device.cpp @@ -190,6 +190,13 @@ bool CGL21Device::Create() // Extract OpenGL version const char *version = reinterpret_cast<const char*>(glGetString(GL_VERSION)); sscanf(version, "%d.%d", &m_glMajor, &m_glMinor); + + if (m_glMajor < 2) + { + GetLogger()->Error("Your hardware does not support OpenGL 2.0 or 2.1."); + return false; + } + GetLogger()->Info("OpenGL %d.%d\n", m_glMajor, m_glMinor); m_framebufferObject = glewIsSupported("GL_EXT_framebuffer_object"); @@ -236,15 +243,13 @@ bool CGL21Device::Create() m_lightsEnabled = std::vector<bool> (numLights, false); int maxTextures = 0; - glGetIntegerv(GL_MAX_TEXTURE_UNITS, &maxTextures); - GetLogger()->Info("Maximum texture units: %d\n", maxTextures); + glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &maxTextures); + GetLogger()->Info("Maximum texture image units: %d\n", maxTextures); m_currentTextures = std::vector<Texture> (maxTextures, Texture()); m_texturesEnabled = std::vector<bool> (maxTextures, false); m_textureStageParams = std::vector<TextureStageParams>(maxTextures, TextureStageParams()); - /* - // Will be enabled when proper shaders are written int value; if (CProfile::GetInstance().GetIntProperty("Setup", "PerPixelLighting", value)) { @@ -255,18 +260,23 @@ bool CGL21Device::Create() CLogger::GetInstance().Info("Using per-pixel lighting\n"); else CLogger::GetInstance().Info("Using per-vertex lighting\n"); - // */ - - CLogger::GetInstance().Info("Using per-vertex lighting\n"); // Create shader program GLchar source[65536]; const GLchar *sources[] = { source }; - PHYSFS_file *file = PHYSFS_openRead("shaders/vertex_shader_21_pervertex.glsl"); + char filename[128]; + + if (m_perPixelLighting) + sprintf(filename, "shaders/vertex_shader_21_perpixel.glsl"); + else + sprintf(filename, "shaders/vertex_shader_21_pervertex.glsl"); + + PHYSFS_file *file = PHYSFS_openRead(filename); if (file == nullptr) { CLogger::GetInstance().Error("Cannot read vertex shader code file!\n"); + CLogger::GetInstance().Error("Missing file \"%s\"\n", filename); return false; } @@ -296,10 +306,16 @@ bool CGL21Device::Create() return false; } - file = PHYSFS_openRead("shaders/fragment_shader_21_pervertex.glsl"); + if (m_perPixelLighting) + sprintf(filename, "shaders/fragment_shader_21_perpixel.glsl"); + else + sprintf(filename, "shaders/fragment_shader_21_pervertex.glsl"); + + file = PHYSFS_openRead(filename); if (file == nullptr) { CLogger::GetInstance().Error("Cannot read fragment shader code file!\n"); + CLogger::GetInstance().Error("Missing file \"%s\"\n", filename); return false; } @@ -1608,13 +1624,6 @@ void CGL21Device::SetRenderState(RenderState state, bool enabled) glUniform1i(uni_LightingEnabled, enabled ? 1 : 0); - /* - if (enabled) - glEnable(GL_LIGHTING); - else - glDisable(GL_LIGHTING); - // */ - if (enabled) { for (int index = 0; index < static_cast<int>( m_lights.size() ); ++index) diff --git a/src/graphics/opengl/gl33device.cpp b/src/graphics/opengl/gl33device.cpp index da05c0b..a4f31b6 100644 --- a/src/graphics/opengl/gl33device.cpp +++ b/src/graphics/opengl/gl33device.cpp @@ -191,9 +191,14 @@ bool CGL33Device::Create() sscanf(version, "%d.%d", &m_glMajor, &m_glMinor); int glVersion = 10 * m_glMajor + m_glMinor; - if (glVersion < 33) + if (glVersion < 30) { - GetLogger()->Error("OpenGL 3.3 unavailable. Game might not work at all.\n"); + GetLogger()->Error("Your hardware does not support OpenGL 3.0+. Exiting.\n"); + return false; + } + else if (glVersion < 33) + { + GetLogger()->Warn("Full OpenGL 3.3 unavailable. Graphics might be bugged.\n"); } else { @@ -272,6 +277,7 @@ bool CGL33Device::Create() if (file == nullptr) { CLogger::GetInstance().Error("Cannot read vertex shader code file!\n"); + CLogger::GetInstance().Error("Missing file \"%s\"\n", filename); return false; } @@ -310,6 +316,7 @@ bool CGL33Device::Create() if (file == nullptr) { CLogger::GetInstance().Error("Cannot read fragment shader code file!\n"); + CLogger::GetInstance().Error("Missing file \"%s\"\n", filename); return false; } -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/colobot.git _______________________________________________ Pkg-games-commits mailing list Pkg-games-commits@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits