Could someone please either confirm that the following code either should work or tell me what I’m doing wrong? Assuming that the orthographic matrix calculation is correct and the shaders compile, link and bind.
Thanks in advance.
drawing code:
wglMakeCurrent(m_hDC, m_hRC);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
RECT rc;
::GetClientRect(m_hWnd, &rc);
Frustum frustum;
frustum.SetOrthographic(rc.left, rc.right, rc.top, rc.bottom, 0.f, 1.f);
m_scene.GetShaderManager().UseStockShader(AGL_STOCK_SHADER::AGL_SHADER_FLAT,
frustum.GetProjectionMatrix().data());
GLuint pBuffer;
glGenBuffers(1, &pBuffer);
M3DVector3f box[5] = {
{ 100, 200, 0.f },
{ 200, 200, 0.f },
{ 200, 100, 0.f },
{ 100, 100, 0.f },
{ 100, 200, 0.f }
};
glBindBuffer(GL_ARRAY_BUFFER, pBuffer);
glEnableVertexAttribArray(AGL_ATTRIBUTE_VERTEX);
glBufferData(GL_ARRAY_BUFFER, sizeof(M3DVector3f)*5, box, GL_STATIC_DRAW);
glVertexAttribPointer(AGL_ATTRIBUTE_VERTEX, 3, GL_FLOAT, GL_FALSE, 0, 0);
glDisable(GL_LIGHTING);
glDisable(GL_DEPTH_TEST);
glColor3f(0.f, 1.f, 1.f);
glLineWidth(2.f);
glDrawArrays(GL_LINES, 0, 5);
glEnable(GL_LIGHTING);
glEnable(GL_DEPTH_TEST);
glDisableVertexAttribArray(AGL_ATTRIBUTE_VERTEX);
glDeleteBuffers(1, &pBuffer);
SwapBuffers(m_hDC);
Vertex Shader:
#version 330
uniform mat4 mvpMatrix;
attribute vec4 vVertex;
void main(void)
{
gl_Position = mvpMatrix * vVertex;
}
Fragment Shader:
#version 330
void main(void)
{
gl_FragColor = gl_Color;
}