I'm trying to render a randomly generated terrain with vertex buffers and OpenGL. I want to use a shader to color the terrain, but it seemms like my shader isn't used. I have used shaders before when drawing triangles manually on the CPU and didn't have any problems there.
activate and deactivate is just glUseProgram(m_ShaderProgram) and glUseProgram(0);
This is my draw method:
void Terrain::drawTest() { glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_IndexBuffer); glBindBuffer(GL_ARRAY_BUFFER, m_VertexBuffer); glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_NORMAL_ARRAY); // setup position & normal pointers glVertexPointer(3, GL_FLOAT, sizeof(TerrainVertex), BUFFER_OFFSET(0)); glNormalPointer(GL_FLOAT, sizeof(TerrainVertex), BUFFER_OFFSET(12)); m_ShaderProgram.activate(); glDrawElements(GL_TRIANGLES, indicesCount, GL_UNSIGNED_INT, BUFFER_OFFSET(0)); m_ShaderProgram.deactivate(); glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_NORMAL_ARRAY); } And my shaders look like this:
Vertex shader:
varying vec3 Normal; varying vec3 Position; varying vec2 Texcoord; void main(void) { Position = (gl_ModelViewMatrix * gl_Vertex).xyz; Normal = gl_NormalMatrix * gl_Normal; Texcoord = gl_MultiTexCoord0.xy; gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; } Fragment shader:
varying vec3 Normal; varying vec3 Position; varying vec2 Texcoord; void main(void) { gl_FragColor = vec4(1.0,1.0,0,0); } As you can see the fragment shader doesn't seem to do anything and I can't figure out what the problem is.

glGetError()to see if there are any errors? $\endgroup$