public static void Initialize(int Width, int Height, string Title, OnLoadHandler LoadHandler, bool UseOGL3 = false)
{
window = new Window(Width, Height, Title, LoadHandler, UseOGL3);
string exePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
defaultTextureVertexShader = new VertexShader();
defaultTextureVertexShader.LoadFromFile(exePath + @"\shaders\defTextureVert.vert.c");
defaultTexturedFragmentShader = new FragmentShader();
defaultTexturedFragmentShader.LoadFromFile(exePath + @"\shaders\defTextureFrag.frag.c");
defaultShapeVertexShader = new VertexShader();
defaultShapeVertexShader.LoadFromFile(exePath + @"\shaders\defShapeVert.vert.c");
defaultShapeFragmentShader = new FragmentShader();
defaultShapeFragmentShader.LoadFromFile(exePath + @"\shaders\defShapeFrag.frag.c");
defaultShapeProgram = new ShaderProgram(defaultShapeVertexShader, defaultShapeFragmentShader);
defaultShapeProgram.Link();
defaultShapeProgram.AddUniformLocation("window_matrix");
defaultShapeProgram.AddUniformLocation("model_matrix");
defaultShapeProgram.AddUniformLocation("projection_matrix");
defaultShapeProgram.AddUniformLocation("camera_matrix");
defaultShapeProgram.AddAttribLocation("vertex_coord");
defaultShapeProgram.AddAttribLocation("vertex_color");
defaultTextureProgram = new ShaderProgram(defaultTextureVertexShader, defaultTexturedFragmentShader);
defaultTextureProgram.Link();
defaultTextureProgram.AddUniformLocation("window_matrix");
defaultTextureProgram.AddUniformLocation("model_matrix");
defaultTextureProgram.AddUniformLocation("projection_matrix");
defaultTextureProgram.AddUniformLocation("camera_matrix");
defaultTextureProgram.AddUniformLocation("texture");
defaultTextureProgram.AddAttribLocation("vertex_coord");
defaultTextureProgram.AddAttribLocation("vertex_texcoord");
windowMatrix = Matrix4.Identity;
projectionMatrix = new Matrix4(new Vector4(2F / window.Width, 0, 0, 0),
new Vector4(0, -2F / window.Height, 0, 0),
new Vector4(0, 0, 1, 0),
new Vector4(0, 0, 0, 1)) * Matrix4.CreateTranslation(-1, 1, 0);
var newCam = new Camera();
newCam.Activate();
renderList = new LinkedList <IRenderable>();
updateList = new LinkedList <IUpdatable>();
renderRemoveList = new LinkedList <IRenderable>();
updateRemoveList = new LinkedList <IUpdatable>();
Utility.ProcessOGLErrors();
window.GameWindow.Load += mainLoop;
window.GameWindow.Run();
}