Hi guys,
I am currently trying to switch our rendering from fixed-function to shaders and can’t seem to get anything to draw to screen. I know the shaders load and compile properly as I have the correct checks in place. Below is the code I think is relevant just to get something basic to render:
void OGL_Core_Renderer::initGL(){
glClearColor(0, 0, 0, 0);
glClear(GL_COLOR_BUFFER_BIT);
// Spit out system graphics information.
cout << " - OpenGL System Info -" << endl;
driverName((char*)glGetString(GL_RENDERER));
cout << " Vendor: " << glGetString(GL_VENDOR) << endl;
cout << " Renderer: " << driverName() << endl;
cout << " Driver Version: " << glGetString(GL_VERSION) << endl;
cout << " GLSL Version: " << glGetString(GL_SHADING_LANGUAGE_VERSION) << endl;
// if(!checkExtensions())
// throw Exception(0, "Graphics Requirements Not Met", "Your graphics driver does not meet the minimum requirements.");
glGenVertexArrays(1, &mVertexArray);
getError();
glBindVertexArray(mVertexArray);
getError();
glGenBuffers(1, &mVertexBufferObject);
getError();
glBindBuffer(GL_ARRAY_BUFFER, mVertexBufferObject);
getError();
glBufferData(GL_ARRAY_BUFFER, 2 * sizeof(DEFAULT_VERTEX_COORDS), DEFAULT_VERTEX_COORDS, GL_STATIC_DRAW);
getError();
glGenBuffers(1, &mTextureBufferObject);
getError();
glBindBuffer(GL_ARRAY_BUFFER, mTextureBufferObject);
getError();
glBufferData(GL_ARRAY_BUFFER, 2 * sizeof(DEFAULT_TEXTURE_COORDS), DEFAULT_TEXTURE_COORDS, GL_STATIC_DRAW);
getError();
}
void OGL_Core_Renderer::drawVertexArray(GLuint textureId, bool defaultTextureCoords){
clearScreen(0, 0, 0);
/* We're going to create a simple diamond made from lines */
const GLfloat vert[4][2] = {
{ 0.0, 1.0 }, /* Top point */
{ 1.0, 0.0 }, /* Right point */
{ 0.0, -1.0 }, /* Bottom point */
{ -1.0, 0.0 } }; /* Left point */
glUseProgram(mShaderManager->getShaderProgram());
getError();
glBindVertexArray(mVertexArray);
glBindBuffer(GL_ARRAY_BUFFER, mVertexBufferObject);
getError();
glBufferData(GL_ARRAY_BUFFER, 4 * 2 * sizeof(vert), vert, GL_STATIC_DRAW);
getError();
glEnableVertexAttribArray(mVertexArray);
getError();
glVertexAttribPointer(mVertexArray, 2, GL_FLOAT, GL_FALSE, 0, 0);
getError();
glDrawArrays(GL_LINES, 0, 2);
getError();
glDisableVertexAttribArray(mVertexArray);
getError();
}
And the shaders:
Vert:
#version 150
in vec4 position;
void main()
{
gl_Position = vec4(1.0, 1.0, 0.0, 0.0) + position;
}
Frag:
#version 150
out vec3 fragColor;
void main()
{
fragColor = vec3(0,0,1);
}
I can’t for the life of me figure out what step I have missed or done improperly. I have no errors or crashing at all even in my OGL Profiler. Does anything standout to you guys?