Hi everyone,

I've just started learning OpenGL over the last couple of days and am currently trying to draw a grid. For my testing purposes however I'm attempting to draw a single line. I should also mention I'm trying to do it with a VBO.

So creating my buffers & shader:

Code :
std::vector<glm::vec3> vertices;
std::vector<GLuint> indices;
GLuint vbo, indexBuffer;
// Add Vertices
vertices.push_back(glm::vec3(0.0f, 0.0f, 0.0f));
vertices.push_back(glm::vec3(5.0f, 0.0f, 0.0f));
// Add indicies
indices.push_back(0);
indices.push_back(1);
 
// Create buffers
glGenBuffers(1, &vbo);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, sizeof(glm::vec3) * vertices.size(), &vertices[0], GL_STATIC_DRAW);
 
glGenBuffers(1, &indexBuffer);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indexBuffer);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(GLuint) * indices.size(), &indices[0], GL_STATIC_DRAW);
 
// Create shader
Shader gridShader = Shader();
gridShader.loadShaders("shaders/shdr_grid.vert", "shaders/shdr_grid.frag");

Then in my render loop my code for drawing is:
Code :
gridShader.use();
gridShader.setUniform("view", view);
gridShader.setUniform("projection", projection);
 
glEnableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);
 
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indexBuffer);
glDrawElements(GL_LINES, indices.size(), GL_UNSIGNED_INT, 0);
 
glDisableVertexAttribArray(0);

The view and projection matrix are confirmed correct when displaying models.

Now shader time

Vertex:
Code :
#version 330
 
uniform mat4 projection;
uniform mat4 view;
 
layout (location = 0) in vec3 pos;
 
void main(void) 
{
	gl_Position = projection * view * vec4(pos, 1.0);
}

Fragment:
Code :
#version 330
 
out vec4 outColor;
 
void main(void) {
	outColor = vec4(1.0, 1.0, 1.0, 1.0);
}

I figured I didn't need a model matrix if the grid was never going to transform (which it isn't), as I'd just be passing in an identity matrix.

Thanks in advance!
Kaine