I'm having some issues getting debug info from openGL. I don't know if it makes any difference but I'm using glfw3 and glew (dynamically linked)
I can't seem to compile shaders and error messages I get is just gibberish.
Here's a sample code:
shader.ID = glCreateShader(shader.type);
const GLchar *source = (const GLchar *)shader.source.c_str();
glShaderSource(shader.ID, 1, &source, 0);
glCompileShader(shader.ID);
GLint compiled = 0;
glGetShaderiv(shader.ID, GL_COMPILE_STATUS, &compiled);
if (compiled == GL_FALSE) {
GLint logLength = 0;
glGetShaderiv(shader.ID, GL_INFO_LOG_LENGTH, &logLength); //won't update logLength
//std::cout << logLength << std::endl;
GLchar* infoLog = new char[logLength + 1];
glGetShaderInfoLog(shader.ID, logLength, NULL, infoLog);
std::cerr << infoLog << std::endl;
delete[] infoLog;
glDeleteShader(shader.ID);
}
glGetShaderiv won't update logLength, and the output I get will be something like this:
═²²²²½½½½½½½½■ε■
This is the first time I'm trying to compile shaders, am I missing something?
EDIT: Context Creation
#include <GL\glew\glew.h>
#include <GL\GLFW\glfw3.h>
void setupGLFW() {
//glfwSetErrorCallback(glfwErrorCallback);
if (GL_FALSE == glfwInit()) {
std::cerr << "Error Initializing GLFW" << std::endl;
exit(-1);
}
GLFWwindow* window = glfwCreateWindow(640, 480, "TEST", NULL, NULL);
glfwMakeContextCurrent(window);
glfwSwapInterval(1);
}
void setupGLEW() {
glewExperimental = GL_TRUE;
const GLenum glewErr = glewInit();
if (glewErr != GLEW_OK) {
cerr << "GLEW failed to initialize." << endl;
exit(-1);
}
}
void testshaderLoader()
{
setupGLFW();
setupGLEW();
glEnable(GL_DEBUG_OUTPUT);
ShaderLoader sloader;
string pathToShader = "absolute/path/to/shader"
GLenum shaderType = GL_FRAGMENT_SHADER;
sloader.loadShader(pathToShader, shaderType);
}
int main()
{
testshaderLoader();
return 0;
}