I am currently learning opengl 4.3 through the book opengl superbible, i am currently trying to draw a simple triangle after being able to draw a point. However i am having trouble getting the triangle to show only the background is displaying. Here is the code:
#include "sb6.h"
#include <math.h>

GLuint compile_shaders(void)
{
GLuint vertex_shader;
GLuint fragment_shader;
GLuint program;

//Vertex shader
static const GLchar * vertex_shader_source[] =
{
"#version 430 core \n"
"void main(void) \n"
"{ \n"
" const vec4 vertices[3] = vec4[3](vec4( 0.25, -0.25, 0.5, 1.0), vec4( -0.25, -0.25, 0.5, 1.0), vec4( 0.25, 0.25, 0.5, 1.0)); \n"
" \n"
" gl_Position = vertices[gl_VertexID]; \n"
"} \n"
};

static const GLchar * fragment_shader_source[] =
{
"#version 430 core \n"
" \n"
"out vec4 color; \n"
" \n"
"void main(void) \n"
"{ \n"
" color = vec4(0.0, 0.8, 1.0., 1.0); \n"
"} \n"
};

//Create and compile vertex shader
vertex_shader = glCreateShader(GL_VERTEX_SHADER);
glShaderSource(vertex_shader, 1, vertex_shader_source, NULL);
glCompileShader(vertex_shader);

//Create and compile fragment shader
fragment_shader = glCreateShader(GL_FRAGMENT_SHADER);
glShaderSource(fragment_shader, 1, fragment_shader_source, NULL);
glCompileShader(fragment_shader);

//Create program, attach shader and link it
program = glCreateProgram();
glAttachShader(program, vertex_shader);
glAttachShader(program, fragment_shader);
glLinkProgram(program);

//Delete the shades now that the program has them
glDeleteShader(vertex_shader);
glDeleteShader(fragment_shader);

return program;
}

class my_application : public sb6::application {
public:

void render(double currentTime) {
const GLfloat color[] = { 0.0f, 0.2f, 0.0f, 1.0f };
glClearBufferfv(GL_COLOR, 0, color);

//Use the program created earlier for rendering
glUseProgram(rendering_program);

//Draw one point
glDrawArrays(GL_TRIANGLES, 0, 3);
}

void startup()
{
rendering_program = compile_shaders();
glGenVertexArrays(1, &vertex_array_object);
glBindVertexArray(vertex_array_object);
}

void shutdown()
{
glDeleteVertexArrays(1, &vertex_array_object);
glDeleteProgram(rendering_program);
glDeleteVertexArrays(1, &vertex_array_object);
}

private:
GLuint rendering_program;
GLuint vertex_array_object;
};

DECLARE_MAIN(my_application);

I can get the window and color up no problem and a point but i cant get anything with a triangle. Please Help