glColorPointer(3, GL_FLOAT, 0, 0);
Should be This:
glColorPointer(4, GL_FLOAT, 0, 0);
I'll probably switch to attribute arrays later just cause some hardware may not like me re-purposing the colour buffer.
also the reason I'm calling glBufferData every frame is cause this is just test code to try to make it work. For performance reasons it won't appear in the final code.