OpenGL and Shader reimplemented