3#define GLFW_INCLUDE_NONE
11namespace acheron::agl {
19 T LoadProc(std::string name) {
20 T proc = (T)glfwGetProcAddress(name.c_str());
21 if(!proc)
throw std::runtime_error(
"Failed to load OpenGL function '" + name +
"'");
29 inline void aglLoad() {
30 aglClearColor = LoadProc<ClearColorProc>(
"glClearColor");
31 aglClear = LoadProc<ClearProc>(
"glClear");
33 aglViewport = LoadProc<ViewportProc>(
"glViewport");
35 aglGenVertexArrays = LoadProc<GenVertexArraysProc>(
"glGenVertexArrays");
36 aglBindVertexArray = LoadProc<BindVertexArrayProc>(
"glBindVertexArray");
37 aglGenBuffers = LoadProc<GenBuffersProc>(
"glGenBuffers");
38 aglBindBuffer = LoadProc<BindBufferProc>(
"glBindBuffer");
39 aglBufferData = LoadProc<BufferDataProc>(
"glBufferData");
41 aglVertexAttribPointer = LoadProc<VertexAttribPointerProc>(
"glVertexAttribPointer");
42 aglVertexAttribDivisor = LoadProc<VertexAttribDivisorProc>(
"glVertexAttribDivisor");
43 aglEnableVertexAttribArray = LoadProc<EnableVertexAttribArrayProc>(
"glEnableVertexAttribArray");
45 aglDrawArrays = LoadProc<DrawArraysProc>(
"glDrawArrays");
46 aglDrawElements = LoadProc<DrawElementsProc>(
"glDrawElements");
47 aglDrawElementsInstanced = LoadProc<DrawElementsInstancedProc>(
"glDrawElements");
49 aglCreateShader = LoadProc<CreateShaderProc>(
"glCreateShader");
50 aglShaderSource = LoadProc<ShaderSourceProc>(
"glShaderSource");
51 aglCompileShader = LoadProc<CompileShaderProc>(
"glCompileShader");
52 aglGetShaderiv = LoadProc<GetShaderivProc>(
"glGetShaderiv");
53 aglGetShaderInfoLog = LoadProc<GetShaderInfoLogProc>(
"glGetShaderInfoLog");
54 aglCreateProgram = LoadProc<CreateProgramProc>(
"glCreateProgram");
55 aglAttachShader = LoadProc<AttachShaderProc>(
"glAttachShader");
56 aglLinkProgram = LoadProc<LinkProgramProc>(
"glLinkProgram");
57 aglGetProgramiv = LoadProc<GetProgramivProc>(
"glGetProgramiv");
58 aglGetProgramInfoLog = LoadProc<GetProgramInfoLogProc>(
"glGetProgramInfoLog");
59 aglDeleteShader = LoadProc<DeleteShaderProc>(
"glDeleteShader");
60 aglUseProgram = LoadProc<UseProgramProc>(
"glUseProgram");
62 aglGetUniformLocation = LoadProc<GetUniformLocationProc>(
"glGetUniformLocation");
63 aglUniform4fv = LoadProc<Uniform4fvProc>(
"glUniform4fv");
64 aglUniformMatrix4fv = LoadProc<UniformMatrix4fvProc>(
"glUniformMatrix4fv");
66 aglGetString = LoadProc<GetStringProc>(
"glGetString");