Added warnings and error messages to graphics devices regarding unsupported OpenGL version
parent
6492908cef
commit
aa2e14219e
|
@ -624,7 +624,10 @@ bool CApplication::Create()
|
||||||
|
|
||||||
if (! m_device->Create() )
|
if (! m_device->Create() )
|
||||||
{
|
{
|
||||||
m_errorMessage = std::string("Error in CDevice::Create()\n") + standardInfoMessage;
|
m_errorMessage = std::string("Error in CDevice::Create()\n")
|
||||||
|
+ "\n\n"
|
||||||
|
+ m_device->GetError()
|
||||||
|
+ standardInfoMessage;
|
||||||
m_exitCode = 5;
|
m_exitCode = 5;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -276,9 +276,18 @@ public:
|
||||||
*/
|
*/
|
||||||
class CDevice
|
class CDevice
|
||||||
{
|
{
|
||||||
|
protected:
|
||||||
|
std::string m_errorMessage;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual ~CDevice() {}
|
virtual ~CDevice() {}
|
||||||
|
|
||||||
|
//! Returns last error message or empty string
|
||||||
|
inline std::string GetError()
|
||||||
|
{
|
||||||
|
return m_errorMessage;
|
||||||
|
}
|
||||||
|
|
||||||
//! Provides a hook to debug graphics code (implementation-specific)
|
//! Provides a hook to debug graphics code (implementation-specific)
|
||||||
virtual void DebugHook() = 0;
|
virtual void DebugHook() = 0;
|
||||||
|
|
||||||
|
|
|
@ -177,6 +177,7 @@ bool CGL21Device::Create()
|
||||||
if (glewInit() != GLEW_OK)
|
if (glewInit() != GLEW_OK)
|
||||||
{
|
{
|
||||||
GetLogger()->Error("GLEW initialization failed\n");
|
GetLogger()->Error("GLEW initialization failed\n");
|
||||||
|
m_errorMessage = "An error occured while initializing GLEW.";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -186,7 +187,11 @@ bool CGL21Device::Create()
|
||||||
|
|
||||||
if (m_glMajor < 2)
|
if (m_glMajor < 2)
|
||||||
{
|
{
|
||||||
GetLogger()->Error("Your hardware does not support OpenGL 2.0 or 2.1.");
|
GetLogger()->Error("Unsupported OpenGL version: %d.%d\n", m_glMajor, m_glMinor);
|
||||||
|
GetLogger()->Error("OpenGL 2.0 or newer is required to use this engine.\n");
|
||||||
|
m_errorMessage = "It seems your graphics card does not support OpenGL 2.0.\n";
|
||||||
|
m_errorMessage += "Please make sure you have appropriate hardware and newest drivers installed.\n";
|
||||||
|
m_errorMessage += "(OpenGL 2.0 is roughly equivalent to Direct3D 9)";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -177,6 +177,7 @@ bool CGL33Device::Create()
|
||||||
if (glewInit() != GLEW_OK)
|
if (glewInit() != GLEW_OK)
|
||||||
{
|
{
|
||||||
GetLogger()->Error("GLEW initialization failed\n");
|
GetLogger()->Error("GLEW initialization failed\n");
|
||||||
|
m_errorMessage = "An error occured while initializing GLEW.";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -187,12 +188,18 @@ bool CGL33Device::Create()
|
||||||
int glVersion = 10 * m_glMajor + m_glMinor;
|
int glVersion = 10 * m_glMajor + m_glMinor;
|
||||||
if (glVersion < 30)
|
if (glVersion < 30)
|
||||||
{
|
{
|
||||||
GetLogger()->Error("Your hardware does not support OpenGL 3.0+. Exiting.\n");
|
GetLogger()->Error("Unsupported OpenGL version: %d.%d\n", m_glMajor, m_glMinor);
|
||||||
|
GetLogger()->Error("OpenGL 3.0 or newer is required to use this engine.\n");
|
||||||
|
m_errorMessage = "It seems your graphics card does not support OpenGL 3.0.\n";
|
||||||
|
m_errorMessage += "Please make sure you have appropriate hardware and newest drivers installed.\n";
|
||||||
|
m_errorMessage += "(OpenGL 3.0 is roughly equivalent to Direct3D 10)";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else if (glVersion < 33)
|
else if (glVersion < 33)
|
||||||
{
|
{
|
||||||
GetLogger()->Warn("Full OpenGL 3.3 unavailable. Graphics might be bugged.\n");
|
GetLogger()->Warn("Partially supported OpenGL version: %d.%d\n", m_glMajor, m_glMinor);
|
||||||
|
GetLogger()->Warn("You may experience problems while running the game on this engine.\n");
|
||||||
|
GetLogger()->Warn("OpenGL 3.3 or newer is recommended.\n");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -173,12 +173,24 @@ bool CGLDevice::Create()
|
||||||
if (glewInit() != GLEW_OK)
|
if (glewInit() != GLEW_OK)
|
||||||
{
|
{
|
||||||
GetLogger()->Error("GLEW initialization failed\n");
|
GetLogger()->Error("GLEW initialization failed\n");
|
||||||
|
m_errorMessage = "An error occured while initializing GLEW.";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Extract OpenGL version
|
// Extract OpenGL version
|
||||||
const char *version = reinterpret_cast<const char*>(glGetString(GL_VERSION));
|
const char *version = reinterpret_cast<const char*>(glGetString(GL_VERSION));
|
||||||
sscanf(version, "%d.%d", &m_glMajor, &m_glMinor);
|
sscanf(version, "%d.%d", &m_glMajor, &m_glMinor);
|
||||||
|
|
||||||
|
int glVersion = 10 * m_glMajor + m_glMinor;
|
||||||
|
if (glVersion < 13)
|
||||||
|
{
|
||||||
|
GetLogger()->Error("Unsupported OpenGL version: %d.%d\n", m_glMajor, m_glMinor);
|
||||||
|
GetLogger()->Error("OpenGL 1.3 or newer is required to use this engine.\n");
|
||||||
|
m_errorMessage = "It seems your graphics card does not support OpenGL 1.3.\n";
|
||||||
|
m_errorMessage += "Please make sure you have appropriate hardware and newest drivers installed.\n";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
GetLogger()->Info("OpenGL %d.%d\n", m_glMajor, m_glMinor);
|
GetLogger()->Info("OpenGL %d.%d\n", m_glMajor, m_glMinor);
|
||||||
|
|
||||||
// Detect multitexture support
|
// Detect multitexture support
|
||||||
|
@ -306,7 +318,7 @@ bool CGLDevice::Create()
|
||||||
|
|
||||||
m_framebufferSupport = DetectFramebufferSupport();
|
m_framebufferSupport = DetectFramebufferSupport();
|
||||||
if (m_framebufferSupport != FBS_NONE)
|
if (m_framebufferSupport != FBS_NONE)
|
||||||
GetLogger()->Debug("Framebuffer supported\n");
|
GetLogger()->Info("Framebuffer supported\n");
|
||||||
|
|
||||||
GetLogger()->Info("CDevice created successfully\n");
|
GetLogger()->Info("CDevice created successfully\n");
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue