Changed CGL33Device requirement to OpenGL 3.2
parent
447b466d6e
commit
898001e065
|
@ -186,13 +186,13 @@ bool CGL33Device::Create()
|
||||||
sscanf(version, "%d.%d", &m_glMajor, &m_glMinor);
|
sscanf(version, "%d.%d", &m_glMajor, &m_glMinor);
|
||||||
|
|
||||||
int glVersion = 10 * m_glMajor + m_glMinor;
|
int glVersion = 10 * m_glMajor + m_glMinor;
|
||||||
if (glVersion < 30)
|
if (glVersion < 32)
|
||||||
{
|
{
|
||||||
GetLogger()->Error("Unsupported OpenGL version: %d.%d\n", m_glMajor, m_glMinor);
|
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");
|
GetLogger()->Error("OpenGL 3.2 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 = "It seems your graphics card does not support OpenGL 3.2.\n";
|
||||||
m_errorMessage += "Please make sure you have appropriate hardware and newest drivers installed.\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)\n\n";
|
m_errorMessage += "(OpenGL 3.2 is roughly equivalent to Direct3D 10)\n\n";
|
||||||
m_errorMessage += GetHardwareInfo(false);
|
m_errorMessage += GetHardwareInfo(false);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -275,7 +275,11 @@ bool CGL33Device::Create()
|
||||||
sprintf(filename, "shaders/vertex_shader_33_pervertex.glsl");
|
sprintf(filename, "shaders/vertex_shader_33_pervertex.glsl");
|
||||||
|
|
||||||
shaders[0] = LoadShader(GL_VERTEX_SHADER, filename);
|
shaders[0] = LoadShader(GL_VERTEX_SHADER, filename);
|
||||||
if (shaders[0] == 0) return false;
|
if (shaders[0] == 0)
|
||||||
|
{
|
||||||
|
m_errorMessage = GetLastShaderError();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (m_perPixelLighting)
|
if (m_perPixelLighting)
|
||||||
sprintf(filename, "shaders/fragment_shader_33_perpixel.glsl");
|
sprintf(filename, "shaders/fragment_shader_33_perpixel.glsl");
|
||||||
|
@ -283,10 +287,18 @@ bool CGL33Device::Create()
|
||||||
sprintf(filename, "shaders/fragment_shader_33_pervertex.glsl");
|
sprintf(filename, "shaders/fragment_shader_33_pervertex.glsl");
|
||||||
|
|
||||||
shaders[1] = LoadShader(GL_FRAGMENT_SHADER, filename);
|
shaders[1] = LoadShader(GL_FRAGMENT_SHADER, filename);
|
||||||
if (shaders[1] == 0) return false;
|
if (shaders[1] == 0)
|
||||||
|
{
|
||||||
|
m_errorMessage = GetLastShaderError();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
m_shaderProgram = LinkProgram(2, shaders);
|
m_shaderProgram = LinkProgram(2, shaders);
|
||||||
if (m_shaderProgram == 0) return false;
|
if (m_shaderProgram == 0)
|
||||||
|
{
|
||||||
|
m_errorMessage = GetLastShaderError();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
glDeleteShader(shaders[0]);
|
glDeleteShader(shaders[0]);
|
||||||
glDeleteShader(shaders[1]);
|
glDeleteShader(shaders[1]);
|
||||||
|
|
|
@ -211,6 +211,13 @@ GLenum TranslateTextureCoordinateGen(int index)
|
||||||
return textureCoordGen[index];
|
return textureCoordGen[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string lastShaderError;
|
||||||
|
|
||||||
|
std::string GetLastShaderError()
|
||||||
|
{
|
||||||
|
return lastShaderError;
|
||||||
|
}
|
||||||
|
|
||||||
GLint LoadShader(GLint type, const char* filename)
|
GLint LoadShader(GLint type, const char* filename)
|
||||||
{
|
{
|
||||||
PHYSFS_file *file = PHYSFS_openRead(filename);
|
PHYSFS_file *file = PHYSFS_openRead(filename);
|
||||||
|
@ -244,6 +251,7 @@ GLint LoadShader(GLint type, const char* filename)
|
||||||
glGetShaderInfoLog(shader, len + 1, nullptr, message.get());
|
glGetShaderInfoLog(shader, len + 1, nullptr, message.get());
|
||||||
|
|
||||||
GetLogger()->Error("Shader compilation error occured!\n%s\n", message.get());
|
GetLogger()->Error("Shader compilation error occured!\n%s\n", message.get());
|
||||||
|
lastShaderError = std::string("Shader compilation error occured!\n\n") + std::string(message.get());
|
||||||
|
|
||||||
glDeleteShader(shader);
|
glDeleteShader(shader);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -276,6 +284,7 @@ GLint LinkProgram(int count, GLint shaders[])
|
||||||
glGetProgramInfoLog(program, len + 1, nullptr, message.get());
|
glGetProgramInfoLog(program, len + 1, nullptr, message.get());
|
||||||
|
|
||||||
GetLogger()->Error("Shader program linking error occured!\n%s\n", message.get());
|
GetLogger()->Error("Shader program linking error occured!\n%s\n", message.get());
|
||||||
|
lastShaderError = std::string("Shader program linking error occured!\n\n") + std::string(message.get());
|
||||||
|
|
||||||
glDeleteProgram(program);
|
glDeleteProgram(program);
|
||||||
|
|
||||||
|
|
|
@ -74,6 +74,8 @@ GLenum TranslateTextureCoordinate(int index);
|
||||||
|
|
||||||
GLenum TranslateTextureCoordinateGen(int index);
|
GLenum TranslateTextureCoordinateGen(int index);
|
||||||
|
|
||||||
|
std::string GetLastShaderError();
|
||||||
|
|
||||||
GLint LoadShader(GLint type, const char* filename);
|
GLint LoadShader(GLint type, const char* filename);
|
||||||
|
|
||||||
GLint LinkProgram(int count, GLint shaders[]);
|
GLint LinkProgram(int count, GLint shaders[]);
|
||||||
|
|
Loading…
Reference in New Issue