mach/src/sysgpu/opengl/proc.zig
Stephen Gutekanst 2a7e6049fd linux: update to latest vulkan-zig API; fix build
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
2024-06-02 18:57:45 -07:00

1459 lines
104 KiB
Zig

const std = @import("std");
const c = @import("c.zig");
var libgl: std.DynLib = undefined;
fn removeOptional(comptime T: type) type {
return switch (@typeInfo(T)) {
.Optional => |opt| opt.child,
else => T,
};
}
fn getProcAddress(name_ptr: [*:0]const u8) c.PROC {
const name = std.mem.span(name_ptr);
return libgl.lookup(removeOptional(c.PROC), name);
}
pub fn init() !void {
libgl = try std.DynLib.open("opengl32.dll");
}
pub fn deinit() void {
libgl.close();
}
pub const InstanceWGL = struct {
getExtensionsStringARB: removeOptional(c.PFNWGLGETEXTENSIONSSTRINGARBPROC),
createContextAttribsARB: removeOptional(c.PFNWGLCREATECONTEXTATTRIBSARBPROC),
choosePixelFormatARB: removeOptional(c.PFNWGLCHOOSEPIXELFORMATARBPROC),
pub fn load(wgl: *InstanceWGL) void {
wgl.getExtensionsStringARB = @ptrCast(c.wglGetProcAddress("wglGetExtensionsStringARB"));
wgl.createContextAttribsARB = @ptrCast(c.wglGetProcAddress("wglCreateContextAttribsARB"));
wgl.choosePixelFormatARB = @ptrCast(c.wglGetProcAddress("wglChoosePixelFormatARB"));
}
};
pub const AdapterGL = struct {
getString: removeOptional(c.PFNGLGETSTRINGPROC),
pub fn load(gl: *AdapterGL) void {
gl.getString = @ptrCast(getProcAddress("glGetString"));
}
};
pub const DeviceGL = struct {
// 1.0
cullFace: removeOptional(c.PFNGLCULLFACEPROC),
frontFace: removeOptional(c.PFNGLFRONTFACEPROC),
hint: removeOptional(c.PFNGLHINTPROC),
lineWidth: removeOptional(c.PFNGLLINEWIDTHPROC),
pointSize: removeOptional(c.PFNGLPOINTSIZEPROC),
polygonMode: removeOptional(c.PFNGLPOLYGONMODEPROC),
scissor: removeOptional(c.PFNGLSCISSORPROC),
texParameterf: removeOptional(c.PFNGLTEXPARAMETERFPROC),
texParameterfv: removeOptional(c.PFNGLTEXPARAMETERFVPROC),
texParameteri: removeOptional(c.PFNGLTEXPARAMETERIPROC),
texParameteriv: removeOptional(c.PFNGLTEXPARAMETERIVPROC),
texImage1D: removeOptional(c.PFNGLTEXIMAGE1DPROC),
texImage2D: removeOptional(c.PFNGLTEXIMAGE2DPROC),
drawBuffer: removeOptional(c.PFNGLDRAWBUFFERPROC),
clear: removeOptional(c.PFNGLCLEARPROC),
clearColor: removeOptional(c.PFNGLCLEARCOLORPROC),
clearStencil: removeOptional(c.PFNGLCLEARSTENCILPROC),
clearDepth: removeOptional(c.PFNGLCLEARDEPTHPROC),
stencilMask: removeOptional(c.PFNGLSTENCILMASKPROC),
colorMask: removeOptional(c.PFNGLCOLORMASKPROC),
depthMask: removeOptional(c.PFNGLDEPTHMASKPROC),
disable: removeOptional(c.PFNGLDISABLEPROC),
enable: removeOptional(c.PFNGLENABLEPROC),
finish: removeOptional(c.PFNGLFINISHPROC),
flush: removeOptional(c.PFNGLFLUSHPROC),
blendFunc: removeOptional(c.PFNGLBLENDFUNCPROC),
logicOp: removeOptional(c.PFNGLLOGICOPPROC),
stencilFunc: removeOptional(c.PFNGLSTENCILFUNCPROC),
stencilOp: removeOptional(c.PFNGLSTENCILOPPROC),
depthFunc: removeOptional(c.PFNGLDEPTHFUNCPROC),
pixelStoref: removeOptional(c.PFNGLPIXELSTOREFPROC),
pixelStorei: removeOptional(c.PFNGLPIXELSTOREIPROC),
readBuffer: removeOptional(c.PFNGLREADBUFFERPROC),
readPixels: removeOptional(c.PFNGLREADPIXELSPROC),
getBooleanv: removeOptional(c.PFNGLGETBOOLEANVPROC),
getDoublev: removeOptional(c.PFNGLGETDOUBLEVPROC),
getError: removeOptional(c.PFNGLGETERRORPROC),
getFloatv: removeOptional(c.PFNGLGETFLOATVPROC),
getIntegerv: removeOptional(c.PFNGLGETINTEGERVPROC),
getString: removeOptional(c.PFNGLGETSTRINGPROC),
getTexImage: removeOptional(c.PFNGLGETTEXIMAGEPROC),
getTexParameterfv: removeOptional(c.PFNGLGETTEXPARAMETERFVPROC),
getTexParameteriv: removeOptional(c.PFNGLGETTEXPARAMETERIVPROC),
getTexLevelParameterfv: removeOptional(c.PFNGLGETTEXLEVELPARAMETERFVPROC),
getTexLevelParameteriv: removeOptional(c.PFNGLGETTEXLEVELPARAMETERIVPROC),
isEnabled: removeOptional(c.PFNGLISENABLEDPROC),
depthRange: removeOptional(c.PFNGLDEPTHRANGEPROC),
viewport: removeOptional(c.PFNGLVIEWPORTPROC),
// 1.1
drawArrays: removeOptional(c.PFNGLDRAWARRAYSPROC),
drawElements: removeOptional(c.PFNGLDRAWELEMENTSPROC),
getPointerv: removeOptional(c.PFNGLGETPOINTERVPROC),
polygonOffset: removeOptional(c.PFNGLPOLYGONOFFSETPROC),
copyTexImage1D: removeOptional(c.PFNGLCOPYTEXIMAGE1DPROC),
copyTexImage2D: removeOptional(c.PFNGLCOPYTEXIMAGE2DPROC),
copyTexSubImage1D: removeOptional(c.PFNGLCOPYTEXSUBIMAGE1DPROC),
copyTexSubImage2D: removeOptional(c.PFNGLCOPYTEXSUBIMAGE2DPROC),
texSubImage1D: removeOptional(c.PFNGLTEXSUBIMAGE1DPROC),
texSubImage2D: removeOptional(c.PFNGLTEXSUBIMAGE2DPROC),
bindTexture: removeOptional(c.PFNGLBINDTEXTUREPROC),
deleteTextures: removeOptional(c.PFNGLDELETETEXTURESPROC),
genTextures: removeOptional(c.PFNGLGENTEXTURESPROC),
isTexture: removeOptional(c.PFNGLISTEXTUREPROC),
// 1.2
drawRangeElements: removeOptional(c.PFNGLDRAWRANGEELEMENTSPROC),
texImage3D: removeOptional(c.PFNGLTEXIMAGE3DPROC),
texSubImage3D: removeOptional(c.PFNGLTEXSUBIMAGE3DPROC),
copyTexSubImage3D: removeOptional(c.PFNGLCOPYTEXSUBIMAGE3DPROC),
// 1.3
activeTexture: removeOptional(c.PFNGLACTIVETEXTUREPROC),
sampleCoverage: removeOptional(c.PFNGLSAMPLECOVERAGEPROC),
compressedTexImage3D: removeOptional(c.PFNGLCOMPRESSEDTEXIMAGE3DPROC),
compressedTexImage2D: removeOptional(c.PFNGLCOMPRESSEDTEXIMAGE2DPROC),
compressedTexImage1D: removeOptional(c.PFNGLCOMPRESSEDTEXIMAGE1DPROC),
compressedTexSubImage3D: removeOptional(c.PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC),
compressedTexSubImage2D: removeOptional(c.PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC),
compressedTexSubImage1D: removeOptional(c.PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC),
getCompressedTexImage: removeOptional(c.PFNGLGETCOMPRESSEDTEXIMAGEPROC),
// 1.4
blendFuncSeparate: removeOptional(c.PFNGLBLENDFUNCSEPARATEPROC),
multiDrawArrays: removeOptional(c.PFNGLMULTIDRAWARRAYSPROC),
multiDrawElements: removeOptional(c.PFNGLMULTIDRAWELEMENTSPROC),
pointParameterf: removeOptional(c.PFNGLPOINTPARAMETERFPROC),
pointParameterfv: removeOptional(c.PFNGLPOINTPARAMETERFVPROC),
pointParameteri: removeOptional(c.PFNGLPOINTPARAMETERIPROC),
pointParameteriv: removeOptional(c.PFNGLPOINTPARAMETERIVPROC),
blendColor: removeOptional(c.PFNGLBLENDCOLORPROC),
blendEquation: removeOptional(c.PFNGLBLENDEQUATIONPROC),
// 1.5
genQueries: removeOptional(c.PFNGLGENQUERIESPROC),
deleteQueries: removeOptional(c.PFNGLDELETEQUERIESPROC),
isQuery: removeOptional(c.PFNGLISQUERYPROC),
beginQuery: removeOptional(c.PFNGLBEGINQUERYPROC),
endQuery: removeOptional(c.PFNGLENDQUERYPROC),
getQueryiv: removeOptional(c.PFNGLGETQUERYIVPROC),
getQueryObjectiv: removeOptional(c.PFNGLGETQUERYOBJECTIVPROC),
getQueryObjectuiv: removeOptional(c.PFNGLGETQUERYOBJECTUIVPROC),
bindBuffer: removeOptional(c.PFNGLBINDBUFFERPROC),
deleteBuffers: removeOptional(c.PFNGLDELETEBUFFERSPROC),
genBuffers: removeOptional(c.PFNGLGENBUFFERSPROC),
isBuffer: removeOptional(c.PFNGLISBUFFERPROC),
bufferData: removeOptional(c.PFNGLBUFFERDATAPROC),
bufferSubData: removeOptional(c.PFNGLBUFFERSUBDATAPROC),
getBufferSubData: removeOptional(c.PFNGLGETBUFFERSUBDATAPROC),
mapBuffer: removeOptional(c.PFNGLMAPBUFFERPROC),
unmapBuffer: removeOptional(c.PFNGLUNMAPBUFFERPROC),
getBufferParameteriv: removeOptional(c.PFNGLGETBUFFERPARAMETERIVPROC),
getBufferPointerv: removeOptional(c.PFNGLGETBUFFERPOINTERVPROC),
// 2.0
blendEquationSeparate: removeOptional(c.PFNGLBLENDEQUATIONSEPARATEPROC),
drawBuffers: removeOptional(c.PFNGLDRAWBUFFERSPROC),
stencilOpSeparate: removeOptional(c.PFNGLSTENCILOPSEPARATEPROC),
stencilFuncSeparate: removeOptional(c.PFNGLSTENCILFUNCSEPARATEPROC),
stencilMaskSeparate: removeOptional(c.PFNGLSTENCILMASKSEPARATEPROC),
attachShader: removeOptional(c.PFNGLATTACHSHADERPROC),
bindAttribLocation: removeOptional(c.PFNGLBINDATTRIBLOCATIONPROC),
compileShader: removeOptional(c.PFNGLCOMPILESHADERPROC),
createProgram: removeOptional(c.PFNGLCREATEPROGRAMPROC),
createShader: removeOptional(c.PFNGLCREATESHADERPROC),
deleteProgram: removeOptional(c.PFNGLDELETEPROGRAMPROC),
deleteShader: removeOptional(c.PFNGLDELETESHADERPROC),
detachShader: removeOptional(c.PFNGLDETACHSHADERPROC),
disableVertexAttribArray: removeOptional(c.PFNGLDISABLEVERTEXATTRIBARRAYPROC),
enableVertexAttribArray: removeOptional(c.PFNGLENABLEVERTEXATTRIBARRAYPROC),
getActiveAttrib: removeOptional(c.PFNGLGETACTIVEATTRIBPROC),
getActiveUniform: removeOptional(c.PFNGLGETACTIVEUNIFORMPROC),
getAttachedShaders: removeOptional(c.PFNGLGETATTACHEDSHADERSPROC),
getAttribLocation: removeOptional(c.PFNGLGETATTRIBLOCATIONPROC),
getProgramiv: removeOptional(c.PFNGLGETPROGRAMIVPROC),
getProgramInfoLog: removeOptional(c.PFNGLGETPROGRAMINFOLOGPROC),
getShaderiv: removeOptional(c.PFNGLGETSHADERIVPROC),
getShaderInfoLog: removeOptional(c.PFNGLGETSHADERINFOLOGPROC),
getShaderSource: removeOptional(c.PFNGLGETSHADERSOURCEPROC),
getUniformLocation: removeOptional(c.PFNGLGETUNIFORMLOCATIONPROC),
getUniformfv: removeOptional(c.PFNGLGETUNIFORMFVPROC),
getUniformiv: removeOptional(c.PFNGLGETUNIFORMIVPROC),
getVertexAttribdv: removeOptional(c.PFNGLGETVERTEXATTRIBDVPROC),
getVertexAttribfv: removeOptional(c.PFNGLGETVERTEXATTRIBFVPROC),
getVertexAttribiv: removeOptional(c.PFNGLGETVERTEXATTRIBIVPROC),
getVertexAttribPointerv: removeOptional(c.PFNGLGETVERTEXATTRIBPOINTERVPROC),
isProgram: removeOptional(c.PFNGLISPROGRAMPROC),
isShader: removeOptional(c.PFNGLISSHADERPROC),
linkProgram: removeOptional(c.PFNGLLINKPROGRAMPROC),
shaderSource: removeOptional(c.PFNGLSHADERSOURCEPROC),
useProgram: removeOptional(c.PFNGLUSEPROGRAMPROC),
uniform1f: removeOptional(c.PFNGLUNIFORM1FPROC),
uniform2f: removeOptional(c.PFNGLUNIFORM2FPROC),
uniform3f: removeOptional(c.PFNGLUNIFORM3FPROC),
uniform4f: removeOptional(c.PFNGLUNIFORM4FPROC),
uniform1i: removeOptional(c.PFNGLUNIFORM1IPROC),
uniform2i: removeOptional(c.PFNGLUNIFORM2IPROC),
uniform3i: removeOptional(c.PFNGLUNIFORM3IPROC),
uniform4i: removeOptional(c.PFNGLUNIFORM4IPROC),
uniform1fv: removeOptional(c.PFNGLUNIFORM1FVPROC),
uniform2fv: removeOptional(c.PFNGLUNIFORM2FVPROC),
uniform3fv: removeOptional(c.PFNGLUNIFORM3FVPROC),
uniform4fv: removeOptional(c.PFNGLUNIFORM4FVPROC),
uniform1iv: removeOptional(c.PFNGLUNIFORM1IVPROC),
uniform2iv: removeOptional(c.PFNGLUNIFORM2IVPROC),
uniform3iv: removeOptional(c.PFNGLUNIFORM3IVPROC),
uniform4iv: removeOptional(c.PFNGLUNIFORM4IVPROC),
uniformMatrix2fv: removeOptional(c.PFNGLUNIFORMMATRIX2FVPROC),
uniformMatrix3fv: removeOptional(c.PFNGLUNIFORMMATRIX3FVPROC),
uniformMatrix4fv: removeOptional(c.PFNGLUNIFORMMATRIX4FVPROC),
validateProgram: removeOptional(c.PFNGLVALIDATEPROGRAMPROC),
vertexAttrib1d: removeOptional(c.PFNGLVERTEXATTRIB1DPROC),
vertexAttrib1dv: removeOptional(c.PFNGLVERTEXATTRIB1DVPROC),
vertexAttrib1f: removeOptional(c.PFNGLVERTEXATTRIB1FPROC),
vertexAttrib1fv: removeOptional(c.PFNGLVERTEXATTRIB1FVPROC),
vertexAttrib1s: removeOptional(c.PFNGLVERTEXATTRIB1SPROC),
vertexAttrib1sv: removeOptional(c.PFNGLVERTEXATTRIB1SVPROC),
vertexAttrib2d: removeOptional(c.PFNGLVERTEXATTRIB2DPROC),
vertexAttrib2dv: removeOptional(c.PFNGLVERTEXATTRIB2DVPROC),
vertexAttrib2f: removeOptional(c.PFNGLVERTEXATTRIB2FPROC),
vertexAttrib2fv: removeOptional(c.PFNGLVERTEXATTRIB2FVPROC),
vertexAttrib2s: removeOptional(c.PFNGLVERTEXATTRIB2SPROC),
vertexAttrib2sv: removeOptional(c.PFNGLVERTEXATTRIB2SVPROC),
vertexAttrib3d: removeOptional(c.PFNGLVERTEXATTRIB3DPROC),
vertexAttrib3dv: removeOptional(c.PFNGLVERTEXATTRIB3DVPROC),
vertexAttrib3f: removeOptional(c.PFNGLVERTEXATTRIB3FPROC),
vertexAttrib3fv: removeOptional(c.PFNGLVERTEXATTRIB3FVPROC),
vertexAttrib3s: removeOptional(c.PFNGLVERTEXATTRIB3SPROC),
vertexAttrib3sv: removeOptional(c.PFNGLVERTEXATTRIB3SVPROC),
vertexAttrib4Nbv: removeOptional(c.PFNGLVERTEXATTRIB4NBVPROC),
vertexAttrib4Niv: removeOptional(c.PFNGLVERTEXATTRIB4NIVPROC),
vertexAttrib4Nsv: removeOptional(c.PFNGLVERTEXATTRIB4NSVPROC),
vertexAttrib4Nub: removeOptional(c.PFNGLVERTEXATTRIB4NUBPROC),
vertexAttrib4Nubv: removeOptional(c.PFNGLVERTEXATTRIB4NUBVPROC),
vertexAttrib4Nuiv: removeOptional(c.PFNGLVERTEXATTRIB4NUIVPROC),
vertexAttrib4Nusv: removeOptional(c.PFNGLVERTEXATTRIB4NUSVPROC),
vertexAttrib4bv: removeOptional(c.PFNGLVERTEXATTRIB4BVPROC),
vertexAttrib4d: removeOptional(c.PFNGLVERTEXATTRIB4DPROC),
vertexAttrib4dv: removeOptional(c.PFNGLVERTEXATTRIB4DVPROC),
vertexAttrib4f: removeOptional(c.PFNGLVERTEXATTRIB4FPROC),
vertexAttrib4fv: removeOptional(c.PFNGLVERTEXATTRIB4FVPROC),
vertexAttrib4iv: removeOptional(c.PFNGLVERTEXATTRIB4IVPROC),
vertexAttrib4s: removeOptional(c.PFNGLVERTEXATTRIB4SPROC),
vertexAttrib4sv: removeOptional(c.PFNGLVERTEXATTRIB4SVPROC),
vertexAttrib4ubv: removeOptional(c.PFNGLVERTEXATTRIB4UBVPROC),
vertexAttrib4uiv: removeOptional(c.PFNGLVERTEXATTRIB4UIVPROC),
vertexAttrib4usv: removeOptional(c.PFNGLVERTEXATTRIB4USVPROC),
vertexAttribPointer: removeOptional(c.PFNGLVERTEXATTRIBPOINTERPROC),
// 2.1
uniformMatrix2x3fv: removeOptional(c.PFNGLUNIFORMMATRIX2X3FVPROC),
uniformMatrix3x2fv: removeOptional(c.PFNGLUNIFORMMATRIX3X2FVPROC),
uniformMatrix2x4fv: removeOptional(c.PFNGLUNIFORMMATRIX2X4FVPROC),
uniformMatrix4x2fv: removeOptional(c.PFNGLUNIFORMMATRIX4X2FVPROC),
uniformMatrix3x4fv: removeOptional(c.PFNGLUNIFORMMATRIX3X4FVPROC),
uniformMatrix4x3fv: removeOptional(c.PFNGLUNIFORMMATRIX4X3FVPROC),
// 3.0
colorMaski: removeOptional(c.PFNGLCOLORMASKIPROC),
getBooleani_v: removeOptional(c.PFNGLGETBOOLEANI_VPROC),
getIntegeri_v: removeOptional(c.PFNGLGETINTEGERI_VPROC),
enablei: removeOptional(c.PFNGLENABLEIPROC),
disablei: removeOptional(c.PFNGLDISABLEIPROC),
isEnabledi: removeOptional(c.PFNGLISENABLEDIPROC),
beginTransformFeedback: removeOptional(c.PFNGLBEGINTRANSFORMFEEDBACKPROC),
endTransformFeedback: removeOptional(c.PFNGLENDTRANSFORMFEEDBACKPROC),
bindBufferRange: removeOptional(c.PFNGLBINDBUFFERRANGEPROC),
bindBufferBase: removeOptional(c.PFNGLBINDBUFFERBASEPROC),
transformFeedbackVaryings: removeOptional(c.PFNGLTRANSFORMFEEDBACKVARYINGSPROC),
getTransformFeedbackVarying: removeOptional(c.PFNGLGETTRANSFORMFEEDBACKVARYINGPROC),
clampColor: removeOptional(c.PFNGLCLAMPCOLORPROC),
beginConditionalRender: removeOptional(c.PFNGLBEGINCONDITIONALRENDERPROC),
endConditionalRender: removeOptional(c.PFNGLENDCONDITIONALRENDERPROC),
vertexAttribIPointer: removeOptional(c.PFNGLVERTEXATTRIBIPOINTERPROC),
getVertexAttribIiv: removeOptional(c.PFNGLGETVERTEXATTRIBIIVPROC),
getVertexAttribIuiv: removeOptional(c.PFNGLGETVERTEXATTRIBIUIVPROC),
vertexAttribI1i: removeOptional(c.PFNGLVERTEXATTRIBI1IPROC),
vertexAttribI2i: removeOptional(c.PFNGLVERTEXATTRIBI2IPROC),
vertexAttribI3i: removeOptional(c.PFNGLVERTEXATTRIBI3IPROC),
vertexAttribI4i: removeOptional(c.PFNGLVERTEXATTRIBI4IPROC),
vertexAttribI1ui: removeOptional(c.PFNGLVERTEXATTRIBI1UIPROC),
vertexAttribI2ui: removeOptional(c.PFNGLVERTEXATTRIBI2UIPROC),
vertexAttribI3ui: removeOptional(c.PFNGLVERTEXATTRIBI3UIPROC),
vertexAttribI4ui: removeOptional(c.PFNGLVERTEXATTRIBI4UIPROC),
vertexAttribI1iv: removeOptional(c.PFNGLVERTEXATTRIBI1IVPROC),
vertexAttribI2iv: removeOptional(c.PFNGLVERTEXATTRIBI2IVPROC),
vertexAttribI3iv: removeOptional(c.PFNGLVERTEXATTRIBI3IVPROC),
vertexAttribI4iv: removeOptional(c.PFNGLVERTEXATTRIBI4IVPROC),
vertexAttribI1uiv: removeOptional(c.PFNGLVERTEXATTRIBI1UIVPROC),
vertexAttribI2uiv: removeOptional(c.PFNGLVERTEXATTRIBI2UIVPROC),
vertexAttribI3uiv: removeOptional(c.PFNGLVERTEXATTRIBI3UIVPROC),
vertexAttribI4uiv: removeOptional(c.PFNGLVERTEXATTRIBI4UIVPROC),
vertexAttribI4bv: removeOptional(c.PFNGLVERTEXATTRIBI4BVPROC),
vertexAttribI4sv: removeOptional(c.PFNGLVERTEXATTRIBI4SVPROC),
vertexAttribI4ubv: removeOptional(c.PFNGLVERTEXATTRIBI4UBVPROC),
vertexAttribI4usv: removeOptional(c.PFNGLVERTEXATTRIBI4USVPROC),
getUniformuiv: removeOptional(c.PFNGLGETUNIFORMUIVPROC),
bindFragDataLocation: removeOptional(c.PFNGLBINDFRAGDATALOCATIONPROC),
getFragDataLocation: removeOptional(c.PFNGLGETFRAGDATALOCATIONPROC),
uniform1ui: removeOptional(c.PFNGLUNIFORM1UIPROC),
uniform2ui: removeOptional(c.PFNGLUNIFORM2UIPROC),
uniform3ui: removeOptional(c.PFNGLUNIFORM3UIPROC),
uniform4ui: removeOptional(c.PFNGLUNIFORM4UIPROC),
uniform1uiv: removeOptional(c.PFNGLUNIFORM1UIVPROC),
uniform2uiv: removeOptional(c.PFNGLUNIFORM2UIVPROC),
uniform3uiv: removeOptional(c.PFNGLUNIFORM3UIVPROC),
uniform4uiv: removeOptional(c.PFNGLUNIFORM4UIVPROC),
texParameterIiv: removeOptional(c.PFNGLTEXPARAMETERIIVPROC),
texParameterIuiv: removeOptional(c.PFNGLTEXPARAMETERIUIVPROC),
getTexParameterIiv: removeOptional(c.PFNGLGETTEXPARAMETERIIVPROC),
getTexParameterIuiv: removeOptional(c.PFNGLGETTEXPARAMETERIUIVPROC),
clearBufferiv: removeOptional(c.PFNGLCLEARBUFFERIVPROC),
clearBufferuiv: removeOptional(c.PFNGLCLEARBUFFERUIVPROC),
clearBufferfv: removeOptional(c.PFNGLCLEARBUFFERFVPROC),
clearBufferfi: removeOptional(c.PFNGLCLEARBUFFERFIPROC),
getStringi: removeOptional(c.PFNGLGETSTRINGIPROC),
isRenderbuffer: removeOptional(c.PFNGLISRENDERBUFFERPROC),
bindRenderbuffer: removeOptional(c.PFNGLBINDRENDERBUFFERPROC),
deleteRenderbuffers: removeOptional(c.PFNGLDELETERENDERBUFFERSPROC),
genRenderbuffers: removeOptional(c.PFNGLGENRENDERBUFFERSPROC),
renderbufferStorage: removeOptional(c.PFNGLRENDERBUFFERSTORAGEPROC),
getRenderbufferParameteriv: removeOptional(c.PFNGLGETRENDERBUFFERPARAMETERIVPROC),
isFramebuffer: removeOptional(c.PFNGLISFRAMEBUFFERPROC),
bindFramebuffer: removeOptional(c.PFNGLBINDFRAMEBUFFERPROC),
deleteFramebuffers: removeOptional(c.PFNGLDELETEFRAMEBUFFERSPROC),
genFramebuffers: removeOptional(c.PFNGLGENFRAMEBUFFERSPROC),
checkFramebufferStatus: removeOptional(c.PFNGLCHECKFRAMEBUFFERSTATUSPROC),
framebufferTexture1D: removeOptional(c.PFNGLFRAMEBUFFERTEXTURE1DPROC),
framebufferTexture2D: removeOptional(c.PFNGLFRAMEBUFFERTEXTURE2DPROC),
framebufferTexture3D: removeOptional(c.PFNGLFRAMEBUFFERTEXTURE3DPROC),
framebufferRenderbuffer: removeOptional(c.PFNGLFRAMEBUFFERRENDERBUFFERPROC),
getFramebufferAttachmentParameteriv: removeOptional(c.PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC),
generateMipmap: removeOptional(c.PFNGLGENERATEMIPMAPPROC),
blitFramebuffer: removeOptional(c.PFNGLBLITFRAMEBUFFERPROC),
renderbufferStorageMultisample: removeOptional(c.PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC),
framebufferTextureLayer: removeOptional(c.PFNGLFRAMEBUFFERTEXTURELAYERPROC),
mapBufferRange: removeOptional(c.PFNGLMAPBUFFERRANGEPROC),
flushMappedBufferRange: removeOptional(c.PFNGLFLUSHMAPPEDBUFFERRANGEPROC),
bindVertexArray: removeOptional(c.PFNGLBINDVERTEXARRAYPROC),
deleteVertexArrays: removeOptional(c.PFNGLDELETEVERTEXARRAYSPROC),
genVertexArrays: removeOptional(c.PFNGLGENVERTEXARRAYSPROC),
isVertexArray: removeOptional(c.PFNGLISVERTEXARRAYPROC),
// 3.1
drawArraysInstanced: removeOptional(c.PFNGLDRAWARRAYSINSTANCEDPROC),
drawElementsInstanced: removeOptional(c.PFNGLDRAWELEMENTSINSTANCEDPROC),
texBuffer: removeOptional(c.PFNGLTEXBUFFERPROC),
primitiveRestartIndex: removeOptional(c.PFNGLPRIMITIVERESTARTINDEXPROC),
copyBufferSubData: removeOptional(c.PFNGLCOPYBUFFERSUBDATAPROC),
getUniformIndices: removeOptional(c.PFNGLGETUNIFORMINDICESPROC),
getActiveUniformsiv: removeOptional(c.PFNGLGETACTIVEUNIFORMSIVPROC),
getActiveUniformName: removeOptional(c.PFNGLGETACTIVEUNIFORMNAMEPROC),
getUniformBlockIndex: removeOptional(c.PFNGLGETUNIFORMBLOCKINDEXPROC),
getActiveUniformBlockiv: removeOptional(c.PFNGLGETACTIVEUNIFORMBLOCKIVPROC),
getActiveUniformBlockName: removeOptional(c.PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC),
uniformBlockBinding: removeOptional(c.PFNGLUNIFORMBLOCKBINDINGPROC),
// 3.2
drawElementsBaseVertex: removeOptional(c.PFNGLDRAWELEMENTSBASEVERTEXPROC),
drawRangeElementsBaseVertex: removeOptional(c.PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC),
drawElementsInstancedBaseVertex: removeOptional(c.PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC),
multiDrawElementsBaseVertex: removeOptional(c.PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC),
provokingVertex: removeOptional(c.PFNGLPROVOKINGVERTEXPROC),
fenceSync: removeOptional(c.PFNGLFENCESYNCPROC),
isSync: removeOptional(c.PFNGLISSYNCPROC),
deleteSync: removeOptional(c.PFNGLDELETESYNCPROC),
clientWaitSync: removeOptional(c.PFNGLCLIENTWAITSYNCPROC),
waitSync: removeOptional(c.PFNGLWAITSYNCPROC),
getInteger64v: removeOptional(c.PFNGLGETINTEGER64VPROC),
getSynciv: removeOptional(c.PFNGLGETSYNCIVPROC),
getInteger64i_v: removeOptional(c.PFNGLGETINTEGER64I_VPROC),
getBufferParameteri64v: removeOptional(c.PFNGLGETBUFFERPARAMETERI64VPROC),
framebufferTexture: removeOptional(c.PFNGLFRAMEBUFFERTEXTUREPROC),
texImage2DMultisample: removeOptional(c.PFNGLTEXIMAGE2DMULTISAMPLEPROC),
texImage3DMultisample: removeOptional(c.PFNGLTEXIMAGE3DMULTISAMPLEPROC),
getMultisamplefv: removeOptional(c.PFNGLGETMULTISAMPLEFVPROC),
sampleMaski: removeOptional(c.PFNGLSAMPLEMASKIPROC),
// 3.3
bindFragDataLocationIndexed: removeOptional(c.PFNGLBINDFRAGDATALOCATIONINDEXEDPROC),
getFragDataIndex: removeOptional(c.PFNGLGETFRAGDATAINDEXPROC),
genSamplers: removeOptional(c.PFNGLGENSAMPLERSPROC),
deleteSamplers: removeOptional(c.PFNGLDELETESAMPLERSPROC),
isSampler: removeOptional(c.PFNGLISSAMPLERPROC),
bindSampler: removeOptional(c.PFNGLBINDSAMPLERPROC),
samplerParameteri: removeOptional(c.PFNGLSAMPLERPARAMETERIPROC),
samplerParameteriv: removeOptional(c.PFNGLSAMPLERPARAMETERIVPROC),
samplerParameterf: removeOptional(c.PFNGLSAMPLERPARAMETERFPROC),
samplerParameterfv: removeOptional(c.PFNGLSAMPLERPARAMETERFVPROC),
samplerParameterIiv: removeOptional(c.PFNGLSAMPLERPARAMETERIIVPROC),
samplerParameterIuiv: removeOptional(c.PFNGLSAMPLERPARAMETERIUIVPROC),
getSamplerParameteriv: removeOptional(c.PFNGLGETSAMPLERPARAMETERIVPROC),
getSamplerParameterIiv: removeOptional(c.PFNGLGETSAMPLERPARAMETERIIVPROC),
getSamplerParameterfv: removeOptional(c.PFNGLGETSAMPLERPARAMETERFVPROC),
getSamplerParameterIuiv: removeOptional(c.PFNGLGETSAMPLERPARAMETERIUIVPROC),
queryCounter: removeOptional(c.PFNGLQUERYCOUNTERPROC),
getQueryObjecti64v: removeOptional(c.PFNGLGETQUERYOBJECTI64VPROC),
getQueryObjectui64v: removeOptional(c.PFNGLGETQUERYOBJECTUI64VPROC),
vertexAttribDivisor: removeOptional(c.PFNGLVERTEXATTRIBDIVISORPROC),
vertexAttribP1ui: removeOptional(c.PFNGLVERTEXATTRIBP1UIPROC),
vertexAttribP1uiv: removeOptional(c.PFNGLVERTEXATTRIBP1UIVPROC),
vertexAttribP2ui: removeOptional(c.PFNGLVERTEXATTRIBP2UIPROC),
vertexAttribP2uiv: removeOptional(c.PFNGLVERTEXATTRIBP2UIVPROC),
vertexAttribP3ui: removeOptional(c.PFNGLVERTEXATTRIBP3UIPROC),
vertexAttribP3uiv: removeOptional(c.PFNGLVERTEXATTRIBP3UIVPROC),
vertexAttribP4ui: removeOptional(c.PFNGLVERTEXATTRIBP4UIPROC),
vertexAttribP4uiv: removeOptional(c.PFNGLVERTEXATTRIBP4UIVPROC),
// 4.0
minSampleShading: removeOptional(c.PFNGLMINSAMPLESHADINGPROC),
blendEquationi: removeOptional(c.PFNGLBLENDEQUATIONIPROC),
blendEquationSeparatei: removeOptional(c.PFNGLBLENDEQUATIONSEPARATEIPROC),
blendFunci: removeOptional(c.PFNGLBLENDFUNCIPROC),
blendFuncSeparatei: removeOptional(c.PFNGLBLENDFUNCSEPARATEIPROC),
drawArraysIndirect: removeOptional(c.PFNGLDRAWARRAYSINDIRECTPROC),
drawElementsIndirect: removeOptional(c.PFNGLDRAWELEMENTSINDIRECTPROC),
uniform1d: removeOptional(c.PFNGLUNIFORM1DPROC),
uniform2d: removeOptional(c.PFNGLUNIFORM2DPROC),
uniform3d: removeOptional(c.PFNGLUNIFORM3DPROC),
uniform4d: removeOptional(c.PFNGLUNIFORM4DPROC),
uniform1dv: removeOptional(c.PFNGLUNIFORM1DVPROC),
uniform2dv: removeOptional(c.PFNGLUNIFORM2DVPROC),
uniform3dv: removeOptional(c.PFNGLUNIFORM3DVPROC),
uniform4dv: removeOptional(c.PFNGLUNIFORM4DVPROC),
uniformMatrix2dv: removeOptional(c.PFNGLUNIFORMMATRIX2DVPROC),
uniformMatrix3dv: removeOptional(c.PFNGLUNIFORMMATRIX3DVPROC),
uniformMatrix4dv: removeOptional(c.PFNGLUNIFORMMATRIX4DVPROC),
uniformMatrix2x3dv: removeOptional(c.PFNGLUNIFORMMATRIX2X3DVPROC),
uniformMatrix2x4dv: removeOptional(c.PFNGLUNIFORMMATRIX2X4DVPROC),
uniformMatrix3x2dv: removeOptional(c.PFNGLUNIFORMMATRIX3X2DVPROC),
uniformMatrix3x4dv: removeOptional(c.PFNGLUNIFORMMATRIX3X4DVPROC),
uniformMatrix4x2dv: removeOptional(c.PFNGLUNIFORMMATRIX4X2DVPROC),
uniformMatrix4x3dv: removeOptional(c.PFNGLUNIFORMMATRIX4X3DVPROC),
getUniformdv: removeOptional(c.PFNGLGETUNIFORMDVPROC),
getSubroutineUniformLocation: removeOptional(c.PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC),
getSubroutineIndex: removeOptional(c.PFNGLGETSUBROUTINEINDEXPROC),
getActiveSubroutineUniformiv: removeOptional(c.PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC),
getActiveSubroutineUniformName: removeOptional(c.PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC),
getActiveSubroutineName: removeOptional(c.PFNGLGETACTIVESUBROUTINENAMEPROC),
uniformSubroutinesuiv: removeOptional(c.PFNGLUNIFORMSUBROUTINESUIVPROC),
getUniformSubroutineuiv: removeOptional(c.PFNGLGETUNIFORMSUBROUTINEUIVPROC),
getProgramStageiv: removeOptional(c.PFNGLGETPROGRAMSTAGEIVPROC),
patchParameteri: removeOptional(c.PFNGLPATCHPARAMETERIPROC),
patchParameterfv: removeOptional(c.PFNGLPATCHPARAMETERFVPROC),
bindTransformFeedback: removeOptional(c.PFNGLBINDTRANSFORMFEEDBACKPROC),
deleteTransformFeedbacks: removeOptional(c.PFNGLDELETETRANSFORMFEEDBACKSPROC),
genTransformFeedbacks: removeOptional(c.PFNGLGENTRANSFORMFEEDBACKSPROC),
isTransformFeedback: removeOptional(c.PFNGLISTRANSFORMFEEDBACKPROC),
pauseTransformFeedback: removeOptional(c.PFNGLPAUSETRANSFORMFEEDBACKPROC),
resumeTransformFeedback: removeOptional(c.PFNGLRESUMETRANSFORMFEEDBACKPROC),
drawTransformFeedback: removeOptional(c.PFNGLDRAWTRANSFORMFEEDBACKPROC),
drawTransformFeedbackStream: removeOptional(c.PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC),
beginQueryIndexed: removeOptional(c.PFNGLBEGINQUERYINDEXEDPROC),
endQueryIndexed: removeOptional(c.PFNGLENDQUERYINDEXEDPROC),
getQueryIndexediv: removeOptional(c.PFNGLGETQUERYINDEXEDIVPROC),
// 4.1
releaseShaderCompiler: removeOptional(c.PFNGLRELEASESHADERCOMPILERPROC),
shaderBinary: removeOptional(c.PFNGLSHADERBINARYPROC),
getShaderPrecisionFormat: removeOptional(c.PFNGLGETSHADERPRECISIONFORMATPROC),
depthRangef: removeOptional(c.PFNGLDEPTHRANGEFPROC),
clearDepthf: removeOptional(c.PFNGLCLEARDEPTHFPROC),
getProgramBinary: removeOptional(c.PFNGLGETPROGRAMBINARYPROC),
programBinary: removeOptional(c.PFNGLPROGRAMBINARYPROC),
programParameteri: removeOptional(c.PFNGLPROGRAMPARAMETERIPROC),
useProgramStages: removeOptional(c.PFNGLUSEPROGRAMSTAGESPROC),
activeShaderProgram: removeOptional(c.PFNGLACTIVESHADERPROGRAMPROC),
createShaderProgramv: removeOptional(c.PFNGLCREATESHADERPROGRAMVPROC),
bindProgramPipeline: removeOptional(c.PFNGLBINDPROGRAMPIPELINEPROC),
deleteProgramPipelines: removeOptional(c.PFNGLDELETEPROGRAMPIPELINESPROC),
genProgramPipelines: removeOptional(c.PFNGLGENPROGRAMPIPELINESPROC),
isProgramPipeline: removeOptional(c.PFNGLISPROGRAMPIPELINEPROC),
getProgramPipelineiv: removeOptional(c.PFNGLGETPROGRAMPIPELINEIVPROC),
programUniform1i: removeOptional(c.PFNGLPROGRAMUNIFORM1IPROC),
programUniform1iv: removeOptional(c.PFNGLPROGRAMUNIFORM1IVPROC),
programUniform1f: removeOptional(c.PFNGLPROGRAMUNIFORM1FPROC),
programUniform1fv: removeOptional(c.PFNGLPROGRAMUNIFORM1FVPROC),
programUniform1d: removeOptional(c.PFNGLPROGRAMUNIFORM1DPROC),
programUniform1dv: removeOptional(c.PFNGLPROGRAMUNIFORM1DVPROC),
programUniform1ui: removeOptional(c.PFNGLPROGRAMUNIFORM1UIPROC),
programUniform1uiv: removeOptional(c.PFNGLPROGRAMUNIFORM1UIVPROC),
programUniform2i: removeOptional(c.PFNGLPROGRAMUNIFORM2IPROC),
programUniform2iv: removeOptional(c.PFNGLPROGRAMUNIFORM2IVPROC),
programUniform2f: removeOptional(c.PFNGLPROGRAMUNIFORM2FPROC),
programUniform2fv: removeOptional(c.PFNGLPROGRAMUNIFORM2FVPROC),
programUniform2d: removeOptional(c.PFNGLPROGRAMUNIFORM2DPROC),
programUniform2dv: removeOptional(c.PFNGLPROGRAMUNIFORM2DVPROC),
programUniform2ui: removeOptional(c.PFNGLPROGRAMUNIFORM2UIPROC),
programUniform2uiv: removeOptional(c.PFNGLPROGRAMUNIFORM2UIVPROC),
programUniform3i: removeOptional(c.PFNGLPROGRAMUNIFORM3IPROC),
programUniform3iv: removeOptional(c.PFNGLPROGRAMUNIFORM3IVPROC),
programUniform3f: removeOptional(c.PFNGLPROGRAMUNIFORM3FPROC),
programUniform3fv: removeOptional(c.PFNGLPROGRAMUNIFORM3FVPROC),
programUniform3d: removeOptional(c.PFNGLPROGRAMUNIFORM3DPROC),
programUniform3dv: removeOptional(c.PFNGLPROGRAMUNIFORM3DVPROC),
programUniform3ui: removeOptional(c.PFNGLPROGRAMUNIFORM3UIPROC),
programUniform3uiv: removeOptional(c.PFNGLPROGRAMUNIFORM3UIVPROC),
programUniform4i: removeOptional(c.PFNGLPROGRAMUNIFORM4IPROC),
programUniform4iv: removeOptional(c.PFNGLPROGRAMUNIFORM4IVPROC),
programUniform4f: removeOptional(c.PFNGLPROGRAMUNIFORM4FPROC),
programUniform4fv: removeOptional(c.PFNGLPROGRAMUNIFORM4FVPROC),
programUniform4d: removeOptional(c.PFNGLPROGRAMUNIFORM4DPROC),
programUniform4dv: removeOptional(c.PFNGLPROGRAMUNIFORM4DVPROC),
programUniform4ui: removeOptional(c.PFNGLPROGRAMUNIFORM4UIPROC),
programUniform4uiv: removeOptional(c.PFNGLPROGRAMUNIFORM4UIVPROC),
programUniformMatrix2fv: removeOptional(c.PFNGLPROGRAMUNIFORMMATRIX2FVPROC),
programUniformMatrix3fv: removeOptional(c.PFNGLPROGRAMUNIFORMMATRIX3FVPROC),
programUniformMatrix4fv: removeOptional(c.PFNGLPROGRAMUNIFORMMATRIX4FVPROC),
programUniformMatrix2dv: removeOptional(c.PFNGLPROGRAMUNIFORMMATRIX2DVPROC),
programUniformMatrix3dv: removeOptional(c.PFNGLPROGRAMUNIFORMMATRIX3DVPROC),
programUniformMatrix4dv: removeOptional(c.PFNGLPROGRAMUNIFORMMATRIX4DVPROC),
programUniformMatrix2x3fv: removeOptional(c.PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC),
programUniformMatrix3x2fv: removeOptional(c.PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC),
programUniformMatrix2x4fv: removeOptional(c.PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC),
programUniformMatrix4x2fv: removeOptional(c.PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC),
programUniformMatrix3x4fv: removeOptional(c.PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC),
programUniformMatrix4x3fv: removeOptional(c.PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC),
programUniformMatrix2x3dv: removeOptional(c.PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC),
programUniformMatrix3x2dv: removeOptional(c.PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC),
programUniformMatrix2x4dv: removeOptional(c.PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC),
programUniformMatrix4x2dv: removeOptional(c.PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC),
programUniformMatrix3x4dv: removeOptional(c.PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC),
programUniformMatrix4x3dv: removeOptional(c.PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC),
validateProgramPipeline: removeOptional(c.PFNGLVALIDATEPROGRAMPIPELINEPROC),
getProgramPipelineInfoLog: removeOptional(c.PFNGLGETPROGRAMPIPELINEINFOLOGPROC),
vertexAttribL1d: removeOptional(c.PFNGLVERTEXATTRIBL1DPROC),
vertexAttribL2d: removeOptional(c.PFNGLVERTEXATTRIBL2DPROC),
vertexAttribL3d: removeOptional(c.PFNGLVERTEXATTRIBL3DPROC),
vertexAttribL4d: removeOptional(c.PFNGLVERTEXATTRIBL4DPROC),
vertexAttribL1dv: removeOptional(c.PFNGLVERTEXATTRIBL1DVPROC),
vertexAttribL2dv: removeOptional(c.PFNGLVERTEXATTRIBL2DVPROC),
vertexAttribL3dv: removeOptional(c.PFNGLVERTEXATTRIBL3DVPROC),
vertexAttribL4dv: removeOptional(c.PFNGLVERTEXATTRIBL4DVPROC),
vertexAttribLPointer: removeOptional(c.PFNGLVERTEXATTRIBLPOINTERPROC),
getVertexAttribLdv: removeOptional(c.PFNGLGETVERTEXATTRIBLDVPROC),
viewportArrayv: removeOptional(c.PFNGLVIEWPORTARRAYVPROC),
viewportIndexedf: removeOptional(c.PFNGLVIEWPORTINDEXEDFPROC),
viewportIndexedfv: removeOptional(c.PFNGLVIEWPORTINDEXEDFVPROC),
scissorArrayv: removeOptional(c.PFNGLSCISSORARRAYVPROC),
scissorIndexed: removeOptional(c.PFNGLSCISSORINDEXEDPROC),
scissorIndexedv: removeOptional(c.PFNGLSCISSORINDEXEDVPROC),
depthRangeArrayv: removeOptional(c.PFNGLDEPTHRANGEARRAYVPROC),
depthRangeIndexed: removeOptional(c.PFNGLDEPTHRANGEINDEXEDPROC),
getFloati_v: removeOptional(c.PFNGLGETFLOATI_VPROC),
getDoublei_v: removeOptional(c.PFNGLGETDOUBLEI_VPROC),
// 4.2
drawArraysInstancedBaseInstance: removeOptional(c.PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC),
drawElementsInstancedBaseInstance: removeOptional(c.PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC),
drawElementsInstancedBaseVertexBaseInstance: removeOptional(c.PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC),
getInternalformativ: removeOptional(c.PFNGLGETINTERNALFORMATIVPROC),
getActiveAtomicCounterBufferiv: removeOptional(c.PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC),
bindImageTexture: removeOptional(c.PFNGLBINDIMAGETEXTUREPROC),
memoryBarrier: removeOptional(c.PFNGLMEMORYBARRIERPROC),
texStorage1D: removeOptional(c.PFNGLTEXSTORAGE1DPROC),
texStorage2D: removeOptional(c.PFNGLTEXSTORAGE2DPROC),
texStorage3D: removeOptional(c.PFNGLTEXSTORAGE3DPROC),
drawTransformFeedbackInstanced: removeOptional(c.PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC),
drawTransformFeedbackStreamInstanced: removeOptional(c.PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC),
// 4.3
clearBufferData: removeOptional(c.PFNGLCLEARBUFFERDATAPROC),
clearBufferSubData: removeOptional(c.PFNGLCLEARBUFFERSUBDATAPROC),
dispatchCompute: removeOptional(c.PFNGLDISPATCHCOMPUTEPROC),
dispatchComputeIndirect: removeOptional(c.PFNGLDISPATCHCOMPUTEINDIRECTPROC),
copyImageSubData: removeOptional(c.PFNGLCOPYIMAGESUBDATAPROC),
framebufferParameteri: removeOptional(c.PFNGLFRAMEBUFFERPARAMETERIPROC),
getFramebufferParameteriv: removeOptional(c.PFNGLGETFRAMEBUFFERPARAMETERIVPROC),
getInternalformati64v: removeOptional(c.PFNGLGETINTERNALFORMATI64VPROC),
invalidateTexSubImage: removeOptional(c.PFNGLINVALIDATETEXSUBIMAGEPROC),
invalidateTexImage: removeOptional(c.PFNGLINVALIDATETEXIMAGEPROC),
invalidateBufferSubData: removeOptional(c.PFNGLINVALIDATEBUFFERSUBDATAPROC),
invalidateBufferData: removeOptional(c.PFNGLINVALIDATEBUFFERDATAPROC),
invalidateFramebuffer: removeOptional(c.PFNGLINVALIDATEFRAMEBUFFERPROC),
invalidateSubFramebuffer: removeOptional(c.PFNGLINVALIDATESUBFRAMEBUFFERPROC),
multiDrawArraysIndirect: removeOptional(c.PFNGLMULTIDRAWARRAYSINDIRECTPROC),
multiDrawElementsIndirect: removeOptional(c.PFNGLMULTIDRAWELEMENTSINDIRECTPROC),
getProgramInterfaceiv: removeOptional(c.PFNGLGETPROGRAMINTERFACEIVPROC),
getProgramResourceIndex: removeOptional(c.PFNGLGETPROGRAMRESOURCEINDEXPROC),
getProgramResourceName: removeOptional(c.PFNGLGETPROGRAMRESOURCENAMEPROC),
getProgramResourceiv: removeOptional(c.PFNGLGETPROGRAMRESOURCEIVPROC),
getProgramResourceLocation: removeOptional(c.PFNGLGETPROGRAMRESOURCELOCATIONPROC),
getProgramResourceLocationIndex: removeOptional(c.PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC),
shaderStorageBlockBinding: removeOptional(c.PFNGLSHADERSTORAGEBLOCKBINDINGPROC),
texBufferRange: removeOptional(c.PFNGLTEXBUFFERRANGEPROC),
texStorage2DMultisample: removeOptional(c.PFNGLTEXSTORAGE2DMULTISAMPLEPROC),
texStorage3DMultisample: removeOptional(c.PFNGLTEXSTORAGE3DMULTISAMPLEPROC),
textureView: removeOptional(c.PFNGLTEXTUREVIEWPROC),
bindVertexBuffer: removeOptional(c.PFNGLBINDVERTEXBUFFERPROC),
vertexAttribFormat: removeOptional(c.PFNGLVERTEXATTRIBFORMATPROC),
vertexAttribIFormat: removeOptional(c.PFNGLVERTEXATTRIBIFORMATPROC),
vertexAttribLFormat: removeOptional(c.PFNGLVERTEXATTRIBLFORMATPROC),
vertexAttribBinding: removeOptional(c.PFNGLVERTEXATTRIBBINDINGPROC),
vertexBindingDivisor: removeOptional(c.PFNGLVERTEXBINDINGDIVISORPROC),
debugMessageControl: removeOptional(c.PFNGLDEBUGMESSAGECONTROLPROC),
debugMessageInsert: removeOptional(c.PFNGLDEBUGMESSAGEINSERTPROC),
debugMessageCallback: removeOptional(c.PFNGLDEBUGMESSAGECALLBACKPROC),
getDebugMessageLog: removeOptional(c.PFNGLGETDEBUGMESSAGELOGPROC),
pushDebugGroup: removeOptional(c.PFNGLPUSHDEBUGGROUPPROC),
popDebugGroup: removeOptional(c.PFNGLPOPDEBUGGROUPPROC),
objectLabel: removeOptional(c.PFNGLOBJECTLABELPROC),
getObjectLabel: removeOptional(c.PFNGLGETOBJECTLABELPROC),
objectPtrLabel: removeOptional(c.PFNGLOBJECTPTRLABELPROC),
getObjectPtrLabel: removeOptional(c.PFNGLGETOBJECTPTRLABELPROC),
// 4.4
bufferStorage: removeOptional(c.PFNGLBUFFERSTORAGEPROC),
clearTexImage: removeOptional(c.PFNGLCLEARTEXIMAGEPROC),
clearTexSubImage: removeOptional(c.PFNGLCLEARTEXSUBIMAGEPROC),
bindBuffersBase: removeOptional(c.PFNGLBINDBUFFERSBASEPROC),
bindBuffersRange: removeOptional(c.PFNGLBINDBUFFERSRANGEPROC),
bindTextures: removeOptional(c.PFNGLBINDTEXTURESPROC),
bindSamplers: removeOptional(c.PFNGLBINDSAMPLERSPROC),
bindImageTextures: removeOptional(c.PFNGLBINDIMAGETEXTURESPROC),
bindVertexBuffers: removeOptional(c.PFNGLBINDVERTEXBUFFERSPROC),
// 4.5
clipControl: removeOptional(c.PFNGLCLIPCONTROLPROC),
createTransformFeedbacks: removeOptional(c.PFNGLCREATETRANSFORMFEEDBACKSPROC),
transformFeedbackBufferBase: removeOptional(c.PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC),
transformFeedbackBufferRange: removeOptional(c.PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC),
getTransformFeedbackiv: removeOptional(c.PFNGLGETTRANSFORMFEEDBACKIVPROC),
getTransformFeedbacki_v: removeOptional(c.PFNGLGETTRANSFORMFEEDBACKI_VPROC),
getTransformFeedbacki64_v: removeOptional(c.PFNGLGETTRANSFORMFEEDBACKI64_VPROC),
createBuffers: removeOptional(c.PFNGLCREATEBUFFERSPROC),
namedBufferStorage: removeOptional(c.PFNGLNAMEDBUFFERSTORAGEPROC),
namedBufferData: removeOptional(c.PFNGLNAMEDBUFFERDATAPROC),
namedBufferSubData: removeOptional(c.PFNGLNAMEDBUFFERSUBDATAPROC),
copyNamedBufferSubData: removeOptional(c.PFNGLCOPYNAMEDBUFFERSUBDATAPROC),
clearNamedBufferData: removeOptional(c.PFNGLCLEARNAMEDBUFFERDATAPROC),
clearNamedBufferSubData: removeOptional(c.PFNGLCLEARNAMEDBUFFERSUBDATAPROC),
mapNamedBuffer: removeOptional(c.PFNGLMAPNAMEDBUFFERPROC),
mapNamedBufferRange: removeOptional(c.PFNGLMAPNAMEDBUFFERRANGEPROC),
unmapNamedBuffer: removeOptional(c.PFNGLUNMAPNAMEDBUFFERPROC),
flushMappedNamedBufferRange: removeOptional(c.PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC),
getNamedBufferParameteriv: removeOptional(c.PFNGLGETNAMEDBUFFERPARAMETERIVPROC),
getNamedBufferParameteri64v: removeOptional(c.PFNGLGETNAMEDBUFFERPARAMETERI64VPROC),
getNamedBufferPointerv: removeOptional(c.PFNGLGETNAMEDBUFFERPOINTERVPROC),
getNamedBufferSubData: removeOptional(c.PFNGLGETNAMEDBUFFERSUBDATAPROC),
createFramebuffers: removeOptional(c.PFNGLCREATEFRAMEBUFFERSPROC),
namedFramebufferRenderbuffer: removeOptional(c.PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC),
namedFramebufferParameteri: removeOptional(c.PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC),
namedFramebufferTexture: removeOptional(c.PFNGLNAMEDFRAMEBUFFERTEXTUREPROC),
namedFramebufferTextureLayer: removeOptional(c.PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC),
namedFramebufferDrawBuffer: removeOptional(c.PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC),
namedFramebufferDrawBuffers: removeOptional(c.PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC),
namedFramebufferReadBuffer: removeOptional(c.PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC),
invalidateNamedFramebufferData: removeOptional(c.PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC),
invalidateNamedFramebufferSubData: removeOptional(c.PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC),
clearNamedFramebufferiv: removeOptional(c.PFNGLCLEARNAMEDFRAMEBUFFERIVPROC),
clearNamedFramebufferuiv: removeOptional(c.PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC),
clearNamedFramebufferfv: removeOptional(c.PFNGLCLEARNAMEDFRAMEBUFFERFVPROC),
clearNamedFramebufferfi: removeOptional(c.PFNGLCLEARNAMEDFRAMEBUFFERFIPROC),
blitNamedFramebuffer: removeOptional(c.PFNGLBLITNAMEDFRAMEBUFFERPROC),
checkNamedFramebufferStatus: removeOptional(c.PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC),
getNamedFramebufferParameteriv: removeOptional(c.PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC),
getNamedFramebufferAttachmentParameteriv: removeOptional(c.PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC),
createRenderbuffers: removeOptional(c.PFNGLCREATERENDERBUFFERSPROC),
namedRenderbufferStorage: removeOptional(c.PFNGLNAMEDRENDERBUFFERSTORAGEPROC),
namedRenderbufferStorageMultisample: removeOptional(c.PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC),
getNamedRenderbufferParameteriv: removeOptional(c.PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC),
createTextures: removeOptional(c.PFNGLCREATETEXTURESPROC),
textureBuffer: removeOptional(c.PFNGLTEXTUREBUFFERPROC),
textureBufferRange: removeOptional(c.PFNGLTEXTUREBUFFERRANGEPROC),
textureStorage1D: removeOptional(c.PFNGLTEXTURESTORAGE1DPROC),
textureStorage2D: removeOptional(c.PFNGLTEXTURESTORAGE2DPROC),
textureStorage3D: removeOptional(c.PFNGLTEXTURESTORAGE3DPROC),
textureStorage2DMultisample: removeOptional(c.PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC),
textureStorage3DMultisample: removeOptional(c.PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC),
textureSubImage1D: removeOptional(c.PFNGLTEXTURESUBIMAGE1DPROC),
textureSubImage2D: removeOptional(c.PFNGLTEXTURESUBIMAGE2DPROC),
textureSubImage3D: removeOptional(c.PFNGLTEXTURESUBIMAGE3DPROC),
compressedTextureSubImage1D: removeOptional(c.PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC),
compressedTextureSubImage2D: removeOptional(c.PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC),
compressedTextureSubImage3D: removeOptional(c.PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC),
copyTextureSubImage1D: removeOptional(c.PFNGLCOPYTEXTURESUBIMAGE1DPROC),
copyTextureSubImage2D: removeOptional(c.PFNGLCOPYTEXTURESUBIMAGE2DPROC),
copyTextureSubImage3D: removeOptional(c.PFNGLCOPYTEXTURESUBIMAGE3DPROC),
textureParameterf: removeOptional(c.PFNGLTEXTUREPARAMETERFPROC),
textureParameterfv: removeOptional(c.PFNGLTEXTUREPARAMETERFVPROC),
textureParameteri: removeOptional(c.PFNGLTEXTUREPARAMETERIPROC),
textureParameterIiv: removeOptional(c.PFNGLTEXTUREPARAMETERIIVPROC),
textureParameterIuiv: removeOptional(c.PFNGLTEXTUREPARAMETERIUIVPROC),
textureParameteriv: removeOptional(c.PFNGLTEXTUREPARAMETERIVPROC),
generateTextureMipmap: removeOptional(c.PFNGLGENERATETEXTUREMIPMAPPROC),
bindTextureUnit: removeOptional(c.PFNGLBINDTEXTUREUNITPROC),
getTextureImage: removeOptional(c.PFNGLGETTEXTUREIMAGEPROC),
getCompressedTextureImage: removeOptional(c.PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC),
getTextureLevelParameterfv: removeOptional(c.PFNGLGETTEXTURELEVELPARAMETERFVPROC),
getTextureLevelParameteriv: removeOptional(c.PFNGLGETTEXTURELEVELPARAMETERIVPROC),
getTextureParameterfv: removeOptional(c.PFNGLGETTEXTUREPARAMETERFVPROC),
getTextureParameterIiv: removeOptional(c.PFNGLGETTEXTUREPARAMETERIIVPROC),
getTextureParameterIuiv: removeOptional(c.PFNGLGETTEXTUREPARAMETERIUIVPROC),
getTextureParameteriv: removeOptional(c.PFNGLGETTEXTUREPARAMETERIVPROC),
createVertexArrays: removeOptional(c.PFNGLCREATEVERTEXARRAYSPROC),
disableVertexArrayAttrib: removeOptional(c.PFNGLDISABLEVERTEXARRAYATTRIBPROC),
enableVertexArrayAttrib: removeOptional(c.PFNGLENABLEVERTEXARRAYATTRIBPROC),
vertexArrayElementBuffer: removeOptional(c.PFNGLVERTEXARRAYELEMENTBUFFERPROC),
vertexArrayVertexBuffer: removeOptional(c.PFNGLVERTEXARRAYVERTEXBUFFERPROC),
vertexArrayVertexBuffers: removeOptional(c.PFNGLVERTEXARRAYVERTEXBUFFERSPROC),
vertexArrayAttribBinding: removeOptional(c.PFNGLVERTEXARRAYATTRIBBINDINGPROC),
vertexArrayAttribFormat: removeOptional(c.PFNGLVERTEXARRAYATTRIBFORMATPROC),
vertexArrayAttribIFormat: removeOptional(c.PFNGLVERTEXARRAYATTRIBIFORMATPROC),
vertexArrayAttribLFormat: removeOptional(c.PFNGLVERTEXARRAYATTRIBLFORMATPROC),
vertexArrayBindingDivisor: removeOptional(c.PFNGLVERTEXARRAYBINDINGDIVISORPROC),
getVertexArrayiv: removeOptional(c.PFNGLGETVERTEXARRAYIVPROC),
getVertexArrayIndexediv: removeOptional(c.PFNGLGETVERTEXARRAYINDEXEDIVPROC),
getVertexArrayIndexed64iv: removeOptional(c.PFNGLGETVERTEXARRAYINDEXED64IVPROC),
createSamplers: removeOptional(c.PFNGLCREATESAMPLERSPROC),
createProgramPipelines: removeOptional(c.PFNGLCREATEPROGRAMPIPELINESPROC),
createQueries: removeOptional(c.PFNGLCREATEQUERIESPROC),
getQueryBufferObjecti64v: removeOptional(c.PFNGLGETQUERYBUFFEROBJECTI64VPROC),
getQueryBufferObjectiv: removeOptional(c.PFNGLGETQUERYBUFFEROBJECTIVPROC),
getQueryBufferObjectui64v: removeOptional(c.PFNGLGETQUERYBUFFEROBJECTUI64VPROC),
getQueryBufferObjectuiv: removeOptional(c.PFNGLGETQUERYBUFFEROBJECTUIVPROC),
memoryBarrierByRegion: removeOptional(c.PFNGLMEMORYBARRIERBYREGIONPROC),
getTextureSubImage: removeOptional(c.PFNGLGETTEXTURESUBIMAGEPROC),
getCompressedTextureSubImage: removeOptional(c.PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC),
getGraphicsResetStatus: removeOptional(c.PFNGLGETGRAPHICSRESETSTATUSPROC),
getnCompressedTexImage: removeOptional(c.PFNGLGETNCOMPRESSEDTEXIMAGEPROC),
getnTexImage: removeOptional(c.PFNGLGETNTEXIMAGEPROC),
getnUniformdv: removeOptional(c.PFNGLGETNUNIFORMDVPROC),
getnUniformfv: removeOptional(c.PFNGLGETNUNIFORMFVPROC),
getnUniformiv: removeOptional(c.PFNGLGETNUNIFORMIVPROC),
getnUniformuiv: removeOptional(c.PFNGLGETNUNIFORMUIVPROC),
readnPixels: removeOptional(c.PFNGLREADNPIXELSPROC),
textureBarrier: removeOptional(c.PFNGLTEXTUREBARRIERPROC),
// 4.6
specializeShader: removeOptional(c.PFNGLSPECIALIZESHADERPROC),
multiDrawArraysIndirectCount: removeOptional(c.PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC),
multiDrawElementsIndirectCount: removeOptional(c.PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC),
polygonOffsetClamp: removeOptional(c.PFNGLPOLYGONOFFSETCLAMPPROC),
pub fn loadVersion(gl: *DeviceGL, major_version: u32, minor_version: u32) void {
const version = major_version * 100 + minor_version * 10;
if (version >= 100) {
gl.cullFace = @ptrCast(getProcAddress("glCullFace"));
gl.frontFace = @ptrCast(getProcAddress("glFrontFace"));
gl.hint = @ptrCast(getProcAddress("glHint"));
gl.lineWidth = @ptrCast(getProcAddress("glLineWidth"));
gl.pointSize = @ptrCast(getProcAddress("glPointSize"));
gl.polygonMode = @ptrCast(getProcAddress("glPolygonMode"));
gl.scissor = @ptrCast(getProcAddress("glScissor"));
gl.texParameterf = @ptrCast(getProcAddress("glTexParameterf"));
gl.texParameterfv = @ptrCast(getProcAddress("glTexParameterfv"));
gl.texParameteri = @ptrCast(getProcAddress("glTexParameteri"));
gl.texParameteriv = @ptrCast(getProcAddress("glTexParameteriv"));
gl.texImage1D = @ptrCast(getProcAddress("glTexImage1D"));
gl.texImage2D = @ptrCast(getProcAddress("glTexImage2D"));
gl.drawBuffer = @ptrCast(getProcAddress("glDrawBuffer"));
gl.clear = @ptrCast(getProcAddress("glClear"));
gl.clearColor = @ptrCast(getProcAddress("glClearColor"));
gl.clearStencil = @ptrCast(getProcAddress("glClearStencil"));
gl.clearDepth = @ptrCast(getProcAddress("glClearDepth"));
gl.stencilMask = @ptrCast(getProcAddress("glStencilMask"));
gl.colorMask = @ptrCast(getProcAddress("glColorMask"));
gl.depthMask = @ptrCast(getProcAddress("glDepthMask"));
gl.disable = @ptrCast(getProcAddress("glDisable"));
gl.enable = @ptrCast(getProcAddress("glEnable"));
gl.finish = @ptrCast(getProcAddress("glFinish"));
gl.flush = @ptrCast(getProcAddress("glFlush"));
gl.blendFunc = @ptrCast(getProcAddress("glBlendFunc"));
gl.logicOp = @ptrCast(getProcAddress("glLogicOp"));
gl.stencilFunc = @ptrCast(getProcAddress("glStencilFunc"));
gl.stencilOp = @ptrCast(getProcAddress("glStencilOp"));
gl.depthFunc = @ptrCast(getProcAddress("glDepthFunc"));
gl.pixelStoref = @ptrCast(getProcAddress("glPixelStoref"));
gl.pixelStorei = @ptrCast(getProcAddress("glPixelStorei"));
gl.readBuffer = @ptrCast(getProcAddress("glReadBuffer"));
gl.readPixels = @ptrCast(getProcAddress("glReadPixels"));
gl.getBooleanv = @ptrCast(getProcAddress("glGetBooleanv"));
gl.getDoublev = @ptrCast(getProcAddress("glGetDoublev"));
gl.getError = @ptrCast(getProcAddress("glGetError"));
gl.getFloatv = @ptrCast(getProcAddress("glGetFloatv"));
gl.getIntegerv = @ptrCast(getProcAddress("glGetIntegerv"));
gl.getString = @ptrCast(getProcAddress("glGetString"));
gl.getTexImage = @ptrCast(getProcAddress("glGetTexImage"));
gl.getTexParameterfv = @ptrCast(getProcAddress("glGetTexParameterfv"));
gl.getTexParameteriv = @ptrCast(getProcAddress("glGetTexParameteriv"));
gl.getTexLevelParameterfv = @ptrCast(getProcAddress("glGetTexLevelParameterfv"));
gl.getTexLevelParameteriv = @ptrCast(getProcAddress("glGetTexLevelParameteriv"));
gl.isEnabled = @ptrCast(getProcAddress("glIsEnabled"));
gl.depthRange = @ptrCast(getProcAddress("glDepthRange"));
gl.viewport = @ptrCast(getProcAddress("glViewport"));
}
if (version >= 110) {
gl.drawArrays = @ptrCast(getProcAddress("glDrawArrays"));
gl.drawElements = @ptrCast(getProcAddress("glDrawElements"));
gl.getPointerv = @ptrCast(getProcAddress("glGetPointerv"));
gl.polygonOffset = @ptrCast(getProcAddress("glPolygonOffset"));
gl.copyTexImage1D = @ptrCast(getProcAddress("glCopyTexImage1D"));
gl.copyTexImage2D = @ptrCast(getProcAddress("glCopyTexImage2D"));
gl.copyTexSubImage1D = @ptrCast(getProcAddress("glCopyTexSubImage1D"));
gl.copyTexSubImage2D = @ptrCast(getProcAddress("glCopyTexSubImage2D"));
gl.texSubImage1D = @ptrCast(getProcAddress("glTexSubImage1D"));
gl.texSubImage2D = @ptrCast(getProcAddress("glTexSubImage2D"));
gl.bindTexture = @ptrCast(getProcAddress("glBindTexture"));
gl.deleteTextures = @ptrCast(getProcAddress("glDeleteTextures"));
gl.genTextures = @ptrCast(getProcAddress("glGenTextures"));
gl.isTexture = @ptrCast(getProcAddress("glIsTexture"));
}
if (version >= 120) {
gl.drawRangeElements = @ptrCast(c.wglGetProcAddress("glDrawRangeElements"));
gl.texImage3D = @ptrCast(c.wglGetProcAddress("glTexImage3D"));
gl.texSubImage3D = @ptrCast(c.wglGetProcAddress("glTexSubImage3D"));
gl.copyTexSubImage3D = @ptrCast(c.wglGetProcAddress("glCopyTexSubImage3D"));
}
if (version >= 130) {
gl.activeTexture = @ptrCast(c.wglGetProcAddress("glActiveTexture"));
gl.sampleCoverage = @ptrCast(c.wglGetProcAddress("glSampleCoverage"));
gl.compressedTexImage3D = @ptrCast(c.wglGetProcAddress("glCompressedTexImage3D"));
gl.compressedTexImage2D = @ptrCast(c.wglGetProcAddress("glCompressedTexImage2D"));
gl.compressedTexImage1D = @ptrCast(c.wglGetProcAddress("glCompressedTexImage1D"));
gl.compressedTexSubImage3D = @ptrCast(c.wglGetProcAddress("glCompressedTexSubImage3D"));
gl.compressedTexSubImage2D = @ptrCast(c.wglGetProcAddress("glCompressedTexSubImage2D"));
gl.compressedTexSubImage1D = @ptrCast(c.wglGetProcAddress("glCompressedTexSubImage1D"));
gl.getCompressedTexImage = @ptrCast(c.wglGetProcAddress("glGetCompressedTexImage"));
}
if (version >= 140) {
gl.blendFuncSeparate = @ptrCast(c.wglGetProcAddress("glBlendFuncSeparate"));
gl.multiDrawArrays = @ptrCast(c.wglGetProcAddress("glMultiDrawArrays"));
gl.multiDrawElements = @ptrCast(c.wglGetProcAddress("glMultiDrawElements"));
gl.pointParameterf = @ptrCast(c.wglGetProcAddress("glPointParameterf"));
gl.pointParameterfv = @ptrCast(c.wglGetProcAddress("glPointParameterfv"));
gl.pointParameteri = @ptrCast(c.wglGetProcAddress("glPointParameteri"));
gl.pointParameteriv = @ptrCast(c.wglGetProcAddress("glPointParameteriv"));
gl.blendColor = @ptrCast(c.wglGetProcAddress("glBlendColor"));
gl.blendEquation = @ptrCast(c.wglGetProcAddress("glBlendEquation"));
}
if (version >= 150) {
gl.genQueries = @ptrCast(c.wglGetProcAddress("glGenQueries"));
gl.deleteQueries = @ptrCast(c.wglGetProcAddress("glDeleteQueries"));
gl.isQuery = @ptrCast(c.wglGetProcAddress("glIsQuery"));
gl.beginQuery = @ptrCast(c.wglGetProcAddress("glBeginQuery"));
gl.endQuery = @ptrCast(c.wglGetProcAddress("glEndQuery"));
gl.getQueryiv = @ptrCast(c.wglGetProcAddress("glGetQueryiv"));
gl.getQueryObjectiv = @ptrCast(c.wglGetProcAddress("glGetQueryObjectiv"));
gl.getQueryObjectuiv = @ptrCast(c.wglGetProcAddress("glGetQueryObjectuiv"));
gl.bindBuffer = @ptrCast(c.wglGetProcAddress("glBindBuffer"));
gl.deleteBuffers = @ptrCast(c.wglGetProcAddress("glDeleteBuffers"));
gl.genBuffers = @ptrCast(c.wglGetProcAddress("glGenBuffers"));
gl.isBuffer = @ptrCast(c.wglGetProcAddress("glIsBuffer"));
gl.bufferData = @ptrCast(c.wglGetProcAddress("glBufferData"));
gl.bufferSubData = @ptrCast(c.wglGetProcAddress("glBufferSubData"));
gl.getBufferSubData = @ptrCast(c.wglGetProcAddress("glGetBufferSubData"));
gl.mapBuffer = @ptrCast(c.wglGetProcAddress("glMapBuffer"));
gl.unmapBuffer = @ptrCast(c.wglGetProcAddress("glUnmapBuffer"));
gl.getBufferParameteriv = @ptrCast(c.wglGetProcAddress("glGetBufferParameteriv"));
gl.getBufferPointerv = @ptrCast(c.wglGetProcAddress("glGetBufferPointerv"));
}
if (version >= 200) {
gl.blendEquationSeparate = @ptrCast(c.wglGetProcAddress("glBlendEquationSeparate"));
gl.drawBuffers = @ptrCast(c.wglGetProcAddress("glDrawBuffers"));
gl.stencilOpSeparate = @ptrCast(c.wglGetProcAddress("glStencilOpSeparate"));
gl.stencilFuncSeparate = @ptrCast(c.wglGetProcAddress("glStencilFuncSeparate"));
gl.stencilMaskSeparate = @ptrCast(c.wglGetProcAddress("glStencilMaskSeparate"));
gl.attachShader = @ptrCast(c.wglGetProcAddress("glAttachShader"));
gl.bindAttribLocation = @ptrCast(c.wglGetProcAddress("glBindAttribLocation"));
gl.compileShader = @ptrCast(c.wglGetProcAddress("glCompileShader"));
gl.createProgram = @ptrCast(c.wglGetProcAddress("glCreateProgram"));
gl.createShader = @ptrCast(c.wglGetProcAddress("glCreateShader"));
gl.deleteProgram = @ptrCast(c.wglGetProcAddress("glDeleteProgram"));
gl.deleteShader = @ptrCast(c.wglGetProcAddress("glDeleteShader"));
gl.detachShader = @ptrCast(c.wglGetProcAddress("glDetachShader"));
gl.disableVertexAttribArray = @ptrCast(c.wglGetProcAddress("glDisableVertexAttribArray"));
gl.enableVertexAttribArray = @ptrCast(c.wglGetProcAddress("glEnableVertexAttribArray"));
gl.getActiveAttrib = @ptrCast(c.wglGetProcAddress("glGetActiveAttrib"));
gl.getActiveUniform = @ptrCast(c.wglGetProcAddress("glGetActiveUniform"));
gl.getAttachedShaders = @ptrCast(c.wglGetProcAddress("glGetAttachedShaders"));
gl.getAttribLocation = @ptrCast(c.wglGetProcAddress("glGetAttribLocation"));
gl.getProgramiv = @ptrCast(c.wglGetProcAddress("glGetProgramiv"));
gl.getProgramInfoLog = @ptrCast(c.wglGetProcAddress("glGetProgramInfoLog"));
gl.getShaderiv = @ptrCast(c.wglGetProcAddress("glGetShaderiv"));
gl.getShaderInfoLog = @ptrCast(c.wglGetProcAddress("glGetShaderInfoLog"));
gl.getShaderSource = @ptrCast(c.wglGetProcAddress("glGetShaderSource"));
gl.getUniformLocation = @ptrCast(c.wglGetProcAddress("glGetUniformLocation"));
gl.getUniformfv = @ptrCast(c.wglGetProcAddress("glGetUniformfv"));
gl.getUniformiv = @ptrCast(c.wglGetProcAddress("glGetUniformiv"));
gl.getVertexAttribdv = @ptrCast(c.wglGetProcAddress("glGetVertexAttribdv"));
gl.getVertexAttribfv = @ptrCast(c.wglGetProcAddress("glGetVertexAttribfv"));
gl.getVertexAttribiv = @ptrCast(c.wglGetProcAddress("glGetVertexAttribiv"));
gl.getVertexAttribPointerv = @ptrCast(c.wglGetProcAddress("glGetVertexAttribPointerv"));
gl.isProgram = @ptrCast(c.wglGetProcAddress("glIsProgram"));
gl.isShader = @ptrCast(c.wglGetProcAddress("glIsShader"));
gl.linkProgram = @ptrCast(c.wglGetProcAddress("glLinkProgram"));
gl.shaderSource = @ptrCast(c.wglGetProcAddress("glShaderSource"));
gl.useProgram = @ptrCast(c.wglGetProcAddress("glUseProgram"));
gl.uniform1f = @ptrCast(c.wglGetProcAddress("glUniform1f"));
gl.uniform2f = @ptrCast(c.wglGetProcAddress("glUniform2f"));
gl.uniform3f = @ptrCast(c.wglGetProcAddress("glUniform3f"));
gl.uniform4f = @ptrCast(c.wglGetProcAddress("glUniform4f"));
gl.uniform1i = @ptrCast(c.wglGetProcAddress("glUniform1i"));
gl.uniform2i = @ptrCast(c.wglGetProcAddress("glUniform2i"));
gl.uniform3i = @ptrCast(c.wglGetProcAddress("glUniform3i"));
gl.uniform4i = @ptrCast(c.wglGetProcAddress("glUniform4i"));
gl.uniform1fv = @ptrCast(c.wglGetProcAddress("glUniform1fv"));
gl.uniform2fv = @ptrCast(c.wglGetProcAddress("glUniform2fv"));
gl.uniform3fv = @ptrCast(c.wglGetProcAddress("glUniform3fv"));
gl.uniform4fv = @ptrCast(c.wglGetProcAddress("glUniform4fv"));
gl.uniform1iv = @ptrCast(c.wglGetProcAddress("glUniform1iv"));
gl.uniform2iv = @ptrCast(c.wglGetProcAddress("glUniform2iv"));
gl.uniform3iv = @ptrCast(c.wglGetProcAddress("glUniform3iv"));
gl.uniform4iv = @ptrCast(c.wglGetProcAddress("glUniform4iv"));
gl.uniformMatrix2fv = @ptrCast(c.wglGetProcAddress("glUniformMatrix2fv"));
gl.uniformMatrix3fv = @ptrCast(c.wglGetProcAddress("glUniformMatrix3fv"));
gl.uniformMatrix4fv = @ptrCast(c.wglGetProcAddress("glUniformMatrix4fv"));
gl.validateProgram = @ptrCast(c.wglGetProcAddress("glValidateProgram"));
gl.vertexAttrib1d = @ptrCast(c.wglGetProcAddress("glVertexAttrib1d"));
gl.vertexAttrib1dv = @ptrCast(c.wglGetProcAddress("glVertexAttrib1dv"));
gl.vertexAttrib1f = @ptrCast(c.wglGetProcAddress("glVertexAttrib1f"));
gl.vertexAttrib1fv = @ptrCast(c.wglGetProcAddress("glVertexAttrib1fv"));
gl.vertexAttrib1s = @ptrCast(c.wglGetProcAddress("glVertexAttrib1s"));
gl.vertexAttrib1sv = @ptrCast(c.wglGetProcAddress("glVertexAttrib1sv"));
gl.vertexAttrib2d = @ptrCast(c.wglGetProcAddress("glVertexAttrib2d"));
gl.vertexAttrib2dv = @ptrCast(c.wglGetProcAddress("glVertexAttrib2dv"));
gl.vertexAttrib2f = @ptrCast(c.wglGetProcAddress("glVertexAttrib2f"));
gl.vertexAttrib2fv = @ptrCast(c.wglGetProcAddress("glVertexAttrib2fv"));
gl.vertexAttrib2s = @ptrCast(c.wglGetProcAddress("glVertexAttrib2s"));
gl.vertexAttrib2sv = @ptrCast(c.wglGetProcAddress("glVertexAttrib2sv"));
gl.vertexAttrib3d = @ptrCast(c.wglGetProcAddress("glVertexAttrib3d"));
gl.vertexAttrib3dv = @ptrCast(c.wglGetProcAddress("glVertexAttrib3dv"));
gl.vertexAttrib3f = @ptrCast(c.wglGetProcAddress("glVertexAttrib3f"));
gl.vertexAttrib3fv = @ptrCast(c.wglGetProcAddress("glVertexAttrib3fv"));
gl.vertexAttrib3s = @ptrCast(c.wglGetProcAddress("glVertexAttrib3s"));
gl.vertexAttrib3sv = @ptrCast(c.wglGetProcAddress("glVertexAttrib3sv"));
gl.vertexAttrib4Nbv = @ptrCast(c.wglGetProcAddress("glVertexAttrib4Nbv"));
gl.vertexAttrib4Niv = @ptrCast(c.wglGetProcAddress("glVertexAttrib4Niv"));
gl.vertexAttrib4Nsv = @ptrCast(c.wglGetProcAddress("glVertexAttrib4Nsv"));
gl.vertexAttrib4Nub = @ptrCast(c.wglGetProcAddress("glVertexAttrib4Nub"));
gl.vertexAttrib4Nubv = @ptrCast(c.wglGetProcAddress("glVertexAttrib4Nubv"));
gl.vertexAttrib4Nuiv = @ptrCast(c.wglGetProcAddress("glVertexAttrib4Nuiv"));
gl.vertexAttrib4Nusv = @ptrCast(c.wglGetProcAddress("glVertexAttrib4Nusv"));
gl.vertexAttrib4bv = @ptrCast(c.wglGetProcAddress("glVertexAttrib4bv"));
gl.vertexAttrib4d = @ptrCast(c.wglGetProcAddress("glVertexAttrib4d"));
gl.vertexAttrib4dv = @ptrCast(c.wglGetProcAddress("glVertexAttrib4dv"));
gl.vertexAttrib4f = @ptrCast(c.wglGetProcAddress("glVertexAttrib4f"));
gl.vertexAttrib4fv = @ptrCast(c.wglGetProcAddress("glVertexAttrib4fv"));
gl.vertexAttrib4iv = @ptrCast(c.wglGetProcAddress("glVertexAttrib4iv"));
gl.vertexAttrib4s = @ptrCast(c.wglGetProcAddress("glVertexAttrib4s"));
gl.vertexAttrib4sv = @ptrCast(c.wglGetProcAddress("glVertexAttrib4sv"));
gl.vertexAttrib4ubv = @ptrCast(c.wglGetProcAddress("glVertexAttrib4ubv"));
gl.vertexAttrib4uiv = @ptrCast(c.wglGetProcAddress("glVertexAttrib4uiv"));
gl.vertexAttrib4usv = @ptrCast(c.wglGetProcAddress("glVertexAttrib4usv"));
gl.vertexAttribPointer = @ptrCast(c.wglGetProcAddress("glVertexAttribPointer"));
}
if (version >= 210) {
gl.uniformMatrix2x3fv = @ptrCast(c.wglGetProcAddress("glUniformMatrix2x3fv"));
gl.uniformMatrix3x2fv = @ptrCast(c.wglGetProcAddress("glUniformMatrix3x2fv"));
gl.uniformMatrix2x4fv = @ptrCast(c.wglGetProcAddress("glUniformMatrix2x4fv"));
gl.uniformMatrix4x2fv = @ptrCast(c.wglGetProcAddress("glUniformMatrix4x2fv"));
gl.uniformMatrix3x4fv = @ptrCast(c.wglGetProcAddress("glUniformMatrix3x4fv"));
gl.uniformMatrix4x3fv = @ptrCast(c.wglGetProcAddress("glUniformMatrix4x3fv"));
}
if (version >= 300) {
gl.colorMaski = @ptrCast(c.wglGetProcAddress("glColorMaski"));
gl.getBooleani_v = @ptrCast(c.wglGetProcAddress("glGetBooleani_v"));
gl.getIntegeri_v = @ptrCast(c.wglGetProcAddress("glGetIntegeri_v"));
gl.enablei = @ptrCast(c.wglGetProcAddress("glEnablei"));
gl.disablei = @ptrCast(c.wglGetProcAddress("glDisablei"));
gl.isEnabledi = @ptrCast(c.wglGetProcAddress("glIsEnabledi"));
gl.beginTransformFeedback = @ptrCast(c.wglGetProcAddress("glBeginTransformFeedback"));
gl.endTransformFeedback = @ptrCast(c.wglGetProcAddress("glEndTransformFeedback"));
gl.bindBufferRange = @ptrCast(c.wglGetProcAddress("glBindBufferRange"));
gl.bindBufferBase = @ptrCast(c.wglGetProcAddress("glBindBufferBase"));
gl.transformFeedbackVaryings = @ptrCast(c.wglGetProcAddress("glTransformFeedbackVaryings"));
gl.getTransformFeedbackVarying = @ptrCast(c.wglGetProcAddress("glGetTransformFeedbackVarying"));
gl.clampColor = @ptrCast(c.wglGetProcAddress("glClampColor"));
gl.beginConditionalRender = @ptrCast(c.wglGetProcAddress("glBeginConditionalRender"));
gl.endConditionalRender = @ptrCast(c.wglGetProcAddress("glEndConditionalRender"));
gl.vertexAttribIPointer = @ptrCast(c.wglGetProcAddress("glVertexAttribIPointer"));
gl.getVertexAttribIiv = @ptrCast(c.wglGetProcAddress("glGetVertexAttribIiv"));
gl.getVertexAttribIuiv = @ptrCast(c.wglGetProcAddress("glGetVertexAttribIuiv"));
gl.vertexAttribI1i = @ptrCast(c.wglGetProcAddress("glVertexAttribI1i"));
gl.vertexAttribI2i = @ptrCast(c.wglGetProcAddress("glVertexAttribI2i"));
gl.vertexAttribI3i = @ptrCast(c.wglGetProcAddress("glVertexAttribI3i"));
gl.vertexAttribI4i = @ptrCast(c.wglGetProcAddress("glVertexAttribI4i"));
gl.vertexAttribI1ui = @ptrCast(c.wglGetProcAddress("glVertexAttribI1ui"));
gl.vertexAttribI2ui = @ptrCast(c.wglGetProcAddress("glVertexAttribI2ui"));
gl.vertexAttribI3ui = @ptrCast(c.wglGetProcAddress("glVertexAttribI3ui"));
gl.vertexAttribI4ui = @ptrCast(c.wglGetProcAddress("glVertexAttribI4ui"));
gl.vertexAttribI1iv = @ptrCast(c.wglGetProcAddress("glVertexAttribI1iv"));
gl.vertexAttribI2iv = @ptrCast(c.wglGetProcAddress("glVertexAttribI2iv"));
gl.vertexAttribI3iv = @ptrCast(c.wglGetProcAddress("glVertexAttribI3iv"));
gl.vertexAttribI4iv = @ptrCast(c.wglGetProcAddress("glVertexAttribI4iv"));
gl.vertexAttribI1uiv = @ptrCast(c.wglGetProcAddress("glVertexAttribI1uiv"));
gl.vertexAttribI2uiv = @ptrCast(c.wglGetProcAddress("glVertexAttribI2uiv"));
gl.vertexAttribI3uiv = @ptrCast(c.wglGetProcAddress("glVertexAttribI3uiv"));
gl.vertexAttribI4uiv = @ptrCast(c.wglGetProcAddress("glVertexAttribI4uiv"));
gl.vertexAttribI4bv = @ptrCast(c.wglGetProcAddress("glVertexAttribI4bv"));
gl.vertexAttribI4sv = @ptrCast(c.wglGetProcAddress("glVertexAttribI4sv"));
gl.vertexAttribI4ubv = @ptrCast(c.wglGetProcAddress("glVertexAttribI4ubv"));
gl.vertexAttribI4usv = @ptrCast(c.wglGetProcAddress("glVertexAttribI4usv"));
gl.getUniformuiv = @ptrCast(c.wglGetProcAddress("glGetUniformuiv"));
gl.bindFragDataLocation = @ptrCast(c.wglGetProcAddress("glBindFragDataLocation"));
gl.getFragDataLocation = @ptrCast(c.wglGetProcAddress("glGetFragDataLocation"));
gl.uniform1ui = @ptrCast(c.wglGetProcAddress("glUniform1ui"));
gl.uniform2ui = @ptrCast(c.wglGetProcAddress("glUniform2ui"));
gl.uniform3ui = @ptrCast(c.wglGetProcAddress("glUniform3ui"));
gl.uniform4ui = @ptrCast(c.wglGetProcAddress("glUniform4ui"));
gl.uniform1uiv = @ptrCast(c.wglGetProcAddress("glUniform1uiv"));
gl.uniform2uiv = @ptrCast(c.wglGetProcAddress("glUniform2uiv"));
gl.uniform3uiv = @ptrCast(c.wglGetProcAddress("glUniform3uiv"));
gl.uniform4uiv = @ptrCast(c.wglGetProcAddress("glUniform4uiv"));
gl.texParameterIiv = @ptrCast(c.wglGetProcAddress("glTexParameterIiv"));
gl.texParameterIuiv = @ptrCast(c.wglGetProcAddress("glTexParameterIuiv"));
gl.getTexParameterIiv = @ptrCast(c.wglGetProcAddress("glGetTexParameterIiv"));
gl.getTexParameterIuiv = @ptrCast(c.wglGetProcAddress("glGetTexParameterIuiv"));
gl.clearBufferiv = @ptrCast(c.wglGetProcAddress("glClearBufferiv"));
gl.clearBufferuiv = @ptrCast(c.wglGetProcAddress("glClearBufferuiv"));
gl.clearBufferfv = @ptrCast(c.wglGetProcAddress("glClearBufferfv"));
gl.clearBufferfi = @ptrCast(c.wglGetProcAddress("glClearBufferfi"));
gl.getStringi = @ptrCast(c.wglGetProcAddress("glGetStringi"));
gl.isRenderbuffer = @ptrCast(c.wglGetProcAddress("glIsRenderbuffer"));
gl.bindRenderbuffer = @ptrCast(c.wglGetProcAddress("glBindRenderbuffer"));
gl.deleteRenderbuffers = @ptrCast(c.wglGetProcAddress("glDeleteRenderbuffers"));
gl.genRenderbuffers = @ptrCast(c.wglGetProcAddress("glGenRenderbuffers"));
gl.renderbufferStorage = @ptrCast(c.wglGetProcAddress("glRenderbufferStorage"));
gl.getRenderbufferParameteriv = @ptrCast(c.wglGetProcAddress("glGetRenderbufferParameteriv"));
gl.isFramebuffer = @ptrCast(c.wglGetProcAddress("glIsFramebuffer"));
gl.bindFramebuffer = @ptrCast(c.wglGetProcAddress("glBindFramebuffer"));
gl.deleteFramebuffers = @ptrCast(c.wglGetProcAddress("glDeleteFramebuffers"));
gl.genFramebuffers = @ptrCast(c.wglGetProcAddress("glGenFramebuffers"));
gl.checkFramebufferStatus = @ptrCast(c.wglGetProcAddress("glCheckFramebufferStatus"));
gl.framebufferTexture1D = @ptrCast(c.wglGetProcAddress("glFramebufferTexture1D"));
gl.framebufferTexture2D = @ptrCast(c.wglGetProcAddress("glFramebufferTexture2D"));
gl.framebufferTexture3D = @ptrCast(c.wglGetProcAddress("glFramebufferTexture3D"));
gl.framebufferRenderbuffer = @ptrCast(c.wglGetProcAddress("glFramebufferRenderbuffer"));
gl.getFramebufferAttachmentParameteriv = @ptrCast(c.wglGetProcAddress("glGetFramebufferAttachmentParameteriv"));
gl.generateMipmap = @ptrCast(c.wglGetProcAddress("glGenerateMipmap"));
gl.blitFramebuffer = @ptrCast(c.wglGetProcAddress("glBlitFramebuffer"));
gl.renderbufferStorageMultisample = @ptrCast(c.wglGetProcAddress("glRenderbufferStorageMultisample"));
gl.framebufferTextureLayer = @ptrCast(c.wglGetProcAddress("glFramebufferTextureLayer"));
gl.mapBufferRange = @ptrCast(c.wglGetProcAddress("glMapBufferRange"));
gl.flushMappedBufferRange = @ptrCast(c.wglGetProcAddress("glFlushMappedBufferRange"));
gl.bindVertexArray = @ptrCast(c.wglGetProcAddress("glBindVertexArray"));
gl.deleteVertexArrays = @ptrCast(c.wglGetProcAddress("glDeleteVertexArrays"));
gl.genVertexArrays = @ptrCast(c.wglGetProcAddress("glGenVertexArrays"));
gl.isVertexArray = @ptrCast(c.wglGetProcAddress("glIsVertexArray"));
}
if (version >= 310) {
gl.drawArraysInstanced = @ptrCast(c.wglGetProcAddress("glDrawArraysInstanced"));
gl.drawElementsInstanced = @ptrCast(c.wglGetProcAddress("glDrawElementsInstanced"));
gl.texBuffer = @ptrCast(c.wglGetProcAddress("glTexBuffer"));
gl.primitiveRestartIndex = @ptrCast(c.wglGetProcAddress("glPrimitiveRestartIndex"));
gl.copyBufferSubData = @ptrCast(c.wglGetProcAddress("glCopyBufferSubData"));
gl.getUniformIndices = @ptrCast(c.wglGetProcAddress("glGetUniformIndices"));
gl.getActiveUniformsiv = @ptrCast(c.wglGetProcAddress("glGetActiveUniformsiv"));
gl.getActiveUniformName = @ptrCast(c.wglGetProcAddress("glGetActiveUniformName"));
gl.getUniformBlockIndex = @ptrCast(c.wglGetProcAddress("glGetUniformBlockIndex"));
gl.getActiveUniformBlockiv = @ptrCast(c.wglGetProcAddress("glGetActiveUniformBlockiv"));
gl.getActiveUniformBlockName = @ptrCast(c.wglGetProcAddress("glGetActiveUniformBlockName"));
gl.uniformBlockBinding = @ptrCast(c.wglGetProcAddress("glUniformBlockBinding"));
}
if (version >= 320) {
gl.drawElementsBaseVertex = @ptrCast(c.wglGetProcAddress("glDrawElementsBaseVertex"));
gl.drawRangeElementsBaseVertex = @ptrCast(c.wglGetProcAddress("glDrawRangeElementsBaseVertex"));
gl.drawElementsInstancedBaseVertex = @ptrCast(c.wglGetProcAddress("glDrawElementsInstancedBaseVertex"));
gl.multiDrawElementsBaseVertex = @ptrCast(c.wglGetProcAddress("glMultiDrawElementsBaseVertex"));
gl.provokingVertex = @ptrCast(c.wglGetProcAddress("glProvokingVertex"));
gl.fenceSync = @ptrCast(c.wglGetProcAddress("glFenceSync"));
gl.isSync = @ptrCast(c.wglGetProcAddress("glIsSync"));
gl.deleteSync = @ptrCast(c.wglGetProcAddress("glDeleteSync"));
gl.clientWaitSync = @ptrCast(c.wglGetProcAddress("glClientWaitSync"));
gl.waitSync = @ptrCast(c.wglGetProcAddress("glWaitSync"));
gl.getInteger64v = @ptrCast(c.wglGetProcAddress("glGetInteger64v"));
gl.getSynciv = @ptrCast(c.wglGetProcAddress("glGetSynciv"));
gl.getInteger64i_v = @ptrCast(c.wglGetProcAddress("glGetInteger64i_v"));
gl.getBufferParameteri64v = @ptrCast(c.wglGetProcAddress("glGetBufferParameteri64v"));
gl.framebufferTexture = @ptrCast(c.wglGetProcAddress("glFramebufferTexture"));
gl.texImage2DMultisample = @ptrCast(c.wglGetProcAddress("glTexImage2DMultisample"));
gl.texImage3DMultisample = @ptrCast(c.wglGetProcAddress("glTexImage3DMultisample"));
gl.getMultisamplefv = @ptrCast(c.wglGetProcAddress("glGetMultisamplefv"));
gl.sampleMaski = @ptrCast(c.wglGetProcAddress("glSampleMaski"));
}
if (version >= 330) {
gl.bindFragDataLocationIndexed = @ptrCast(c.wglGetProcAddress("glBindFragDataLocationIndexed"));
gl.getFragDataIndex = @ptrCast(c.wglGetProcAddress("glGetFragDataIndex"));
gl.genSamplers = @ptrCast(c.wglGetProcAddress("glGenSamplers"));
gl.deleteSamplers = @ptrCast(c.wglGetProcAddress("glDeleteSamplers"));
gl.isSampler = @ptrCast(c.wglGetProcAddress("glIsSampler"));
gl.bindSampler = @ptrCast(c.wglGetProcAddress("glBindSampler"));
gl.samplerParameteri = @ptrCast(c.wglGetProcAddress("glSamplerParameteri"));
gl.samplerParameteriv = @ptrCast(c.wglGetProcAddress("glSamplerParameteriv"));
gl.samplerParameterf = @ptrCast(c.wglGetProcAddress("glSamplerParameterf"));
gl.samplerParameterfv = @ptrCast(c.wglGetProcAddress("glSamplerParameterfv"));
gl.samplerParameterIiv = @ptrCast(c.wglGetProcAddress("glSamplerParameterIiv"));
gl.samplerParameterIuiv = @ptrCast(c.wglGetProcAddress("glSamplerParameterIuiv"));
gl.getSamplerParameteriv = @ptrCast(c.wglGetProcAddress("glGetSamplerParameteriv"));
gl.getSamplerParameterIiv = @ptrCast(c.wglGetProcAddress("glGetSamplerParameterIiv"));
gl.getSamplerParameterfv = @ptrCast(c.wglGetProcAddress("glGetSamplerParameterfv"));
gl.getSamplerParameterIuiv = @ptrCast(c.wglGetProcAddress("glGetSamplerParameterIuiv"));
gl.queryCounter = @ptrCast(c.wglGetProcAddress("glQueryCounter"));
gl.getQueryObjecti64v = @ptrCast(c.wglGetProcAddress("glGetQueryObjecti64v"));
gl.getQueryObjectui64v = @ptrCast(c.wglGetProcAddress("glGetQueryObjectui64v"));
gl.vertexAttribDivisor = @ptrCast(c.wglGetProcAddress("glVertexAttribDivisor"));
gl.vertexAttribP1ui = @ptrCast(c.wglGetProcAddress("glVertexAttribP1ui"));
gl.vertexAttribP1uiv = @ptrCast(c.wglGetProcAddress("glVertexAttribP1uiv"));
gl.vertexAttribP2ui = @ptrCast(c.wglGetProcAddress("glVertexAttribP2ui"));
gl.vertexAttribP2uiv = @ptrCast(c.wglGetProcAddress("glVertexAttribP2uiv"));
gl.vertexAttribP3ui = @ptrCast(c.wglGetProcAddress("glVertexAttribP3ui"));
gl.vertexAttribP3uiv = @ptrCast(c.wglGetProcAddress("glVertexAttribP3uiv"));
gl.vertexAttribP4ui = @ptrCast(c.wglGetProcAddress("glVertexAttribP4ui"));
gl.vertexAttribP4uiv = @ptrCast(c.wglGetProcAddress("glVertexAttribP4uiv"));
}
if (version >= 400) {
gl.minSampleShading = @ptrCast(c.wglGetProcAddress("glMinSampleShading"));
gl.blendEquationi = @ptrCast(c.wglGetProcAddress("glBlendEquationi"));
gl.blendEquationSeparatei = @ptrCast(c.wglGetProcAddress("glBlendEquationSeparatei"));
gl.blendFunci = @ptrCast(c.wglGetProcAddress("glBlendFunci"));
gl.blendFuncSeparatei = @ptrCast(c.wglGetProcAddress("glBlendFuncSeparatei"));
gl.drawArraysIndirect = @ptrCast(c.wglGetProcAddress("glDrawArraysIndirect"));
gl.drawElementsIndirect = @ptrCast(c.wglGetProcAddress("glDrawElementsIndirect"));
gl.uniform1d = @ptrCast(c.wglGetProcAddress("glUniform1d"));
gl.uniform2d = @ptrCast(c.wglGetProcAddress("glUniform2d"));
gl.uniform3d = @ptrCast(c.wglGetProcAddress("glUniform3d"));
gl.uniform4d = @ptrCast(c.wglGetProcAddress("glUniform4d"));
gl.uniform1dv = @ptrCast(c.wglGetProcAddress("glUniform1dv"));
gl.uniform2dv = @ptrCast(c.wglGetProcAddress("glUniform2dv"));
gl.uniform3dv = @ptrCast(c.wglGetProcAddress("glUniform3dv"));
gl.uniform4dv = @ptrCast(c.wglGetProcAddress("glUniform4dv"));
gl.uniformMatrix2dv = @ptrCast(c.wglGetProcAddress("glUniformMatrix2dv"));
gl.uniformMatrix3dv = @ptrCast(c.wglGetProcAddress("glUniformMatrix3dv"));
gl.uniformMatrix4dv = @ptrCast(c.wglGetProcAddress("glUniformMatrix4dv"));
gl.uniformMatrix2x3dv = @ptrCast(c.wglGetProcAddress("glUniformMatrix2x3dv"));
gl.uniformMatrix2x4dv = @ptrCast(c.wglGetProcAddress("glUniformMatrix2x4dv"));
gl.uniformMatrix3x2dv = @ptrCast(c.wglGetProcAddress("glUniformMatrix3x2dv"));
gl.uniformMatrix3x4dv = @ptrCast(c.wglGetProcAddress("glUniformMatrix3x4dv"));
gl.uniformMatrix4x2dv = @ptrCast(c.wglGetProcAddress("glUniformMatrix4x2dv"));
gl.uniformMatrix4x3dv = @ptrCast(c.wglGetProcAddress("glUniformMatrix4x3dv"));
gl.getUniformdv = @ptrCast(c.wglGetProcAddress("glGetUniformdv"));
gl.getSubroutineUniformLocation = @ptrCast(c.wglGetProcAddress("glGetSubroutineUniformLocation"));
gl.getSubroutineIndex = @ptrCast(c.wglGetProcAddress("glGetSubroutineIndex"));
gl.getActiveSubroutineUniformiv = @ptrCast(c.wglGetProcAddress("glGetActiveSubroutineUniformiv"));
gl.getActiveSubroutineUniformName = @ptrCast(c.wglGetProcAddress("glGetActiveSubroutineUniformName"));
gl.getActiveSubroutineName = @ptrCast(c.wglGetProcAddress("glGetActiveSubroutineName"));
gl.uniformSubroutinesuiv = @ptrCast(c.wglGetProcAddress("glUniformSubroutinesuiv"));
gl.getUniformSubroutineuiv = @ptrCast(c.wglGetProcAddress("glGetUniformSubroutineuiv"));
gl.getProgramStageiv = @ptrCast(c.wglGetProcAddress("glGetProgramStageiv"));
gl.patchParameteri = @ptrCast(c.wglGetProcAddress("glPatchParameteri"));
gl.patchParameterfv = @ptrCast(c.wglGetProcAddress("glPatchParameterfv"));
gl.bindTransformFeedback = @ptrCast(c.wglGetProcAddress("glBindTransformFeedback"));
gl.deleteTransformFeedbacks = @ptrCast(c.wglGetProcAddress("glDeleteTransformFeedbacks"));
gl.genTransformFeedbacks = @ptrCast(c.wglGetProcAddress("glGenTransformFeedbacks"));
gl.isTransformFeedback = @ptrCast(c.wglGetProcAddress("glIsTransformFeedback"));
gl.pauseTransformFeedback = @ptrCast(c.wglGetProcAddress("glPauseTransformFeedback"));
gl.resumeTransformFeedback = @ptrCast(c.wglGetProcAddress("glResumeTransformFeedback"));
gl.drawTransformFeedback = @ptrCast(c.wglGetProcAddress("glDrawTransformFeedback"));
gl.drawTransformFeedbackStream = @ptrCast(c.wglGetProcAddress("glDrawTransformFeedbackStream"));
gl.beginQueryIndexed = @ptrCast(c.wglGetProcAddress("glBeginQueryIndexed"));
gl.endQueryIndexed = @ptrCast(c.wglGetProcAddress("glEndQueryIndexed"));
gl.getQueryIndexediv = @ptrCast(c.wglGetProcAddress("glGetQueryIndexediv"));
}
if (version >= 410) {
gl.releaseShaderCompiler = @ptrCast(c.wglGetProcAddress("glReleaseShaderCompiler"));
gl.shaderBinary = @ptrCast(c.wglGetProcAddress("glShaderBinary"));
gl.getShaderPrecisionFormat = @ptrCast(c.wglGetProcAddress("glGetShaderPrecisionFormat"));
gl.depthRangef = @ptrCast(c.wglGetProcAddress("glDepthRangef"));
gl.clearDepthf = @ptrCast(c.wglGetProcAddress("glClearDepthf"));
gl.getProgramBinary = @ptrCast(c.wglGetProcAddress("glGetProgramBinary"));
gl.programBinary = @ptrCast(c.wglGetProcAddress("glProgramBinary"));
gl.programParameteri = @ptrCast(c.wglGetProcAddress("glProgramParameteri"));
gl.useProgramStages = @ptrCast(c.wglGetProcAddress("glUseProgramStages"));
gl.activeShaderProgram = @ptrCast(c.wglGetProcAddress("glActiveShaderProgram"));
gl.createShaderProgramv = @ptrCast(c.wglGetProcAddress("glCreateShaderProgramv"));
gl.bindProgramPipeline = @ptrCast(c.wglGetProcAddress("glBindProgramPipeline"));
gl.deleteProgramPipelines = @ptrCast(c.wglGetProcAddress("glDeleteProgramPipelines"));
gl.genProgramPipelines = @ptrCast(c.wglGetProcAddress("glGenProgramPipelines"));
gl.isProgramPipeline = @ptrCast(c.wglGetProcAddress("glIsProgramPipeline"));
gl.getProgramPipelineiv = @ptrCast(c.wglGetProcAddress("glGetProgramPipelineiv"));
gl.programUniform1i = @ptrCast(c.wglGetProcAddress("glProgramUniform1i"));
gl.programUniform1iv = @ptrCast(c.wglGetProcAddress("glProgramUniform1iv"));
gl.programUniform1f = @ptrCast(c.wglGetProcAddress("glProgramUniform1f"));
gl.programUniform1fv = @ptrCast(c.wglGetProcAddress("glProgramUniform1fv"));
gl.programUniform1d = @ptrCast(c.wglGetProcAddress("glProgramUniform1d"));
gl.programUniform1dv = @ptrCast(c.wglGetProcAddress("glProgramUniform1dv"));
gl.programUniform1ui = @ptrCast(c.wglGetProcAddress("glProgramUniform1ui"));
gl.programUniform1uiv = @ptrCast(c.wglGetProcAddress("glProgramUniform1uiv"));
gl.programUniform2i = @ptrCast(c.wglGetProcAddress("glProgramUniform2i"));
gl.programUniform2iv = @ptrCast(c.wglGetProcAddress("glProgramUniform2iv"));
gl.programUniform2f = @ptrCast(c.wglGetProcAddress("glProgramUniform2f"));
gl.programUniform2fv = @ptrCast(c.wglGetProcAddress("glProgramUniform2fv"));
gl.programUniform2d = @ptrCast(c.wglGetProcAddress("glProgramUniform2d"));
gl.programUniform2dv = @ptrCast(c.wglGetProcAddress("glProgramUniform2dv"));
gl.programUniform2ui = @ptrCast(c.wglGetProcAddress("glProgramUniform2ui"));
gl.programUniform2uiv = @ptrCast(c.wglGetProcAddress("glProgramUniform2uiv"));
gl.programUniform3i = @ptrCast(c.wglGetProcAddress("glProgramUniform3i"));
gl.programUniform3iv = @ptrCast(c.wglGetProcAddress("glProgramUniform3iv"));
gl.programUniform3f = @ptrCast(c.wglGetProcAddress("glProgramUniform3f"));
gl.programUniform3fv = @ptrCast(c.wglGetProcAddress("glProgramUniform3fv"));
gl.programUniform3d = @ptrCast(c.wglGetProcAddress("glProgramUniform3d"));
gl.programUniform3dv = @ptrCast(c.wglGetProcAddress("glProgramUniform3dv"));
gl.programUniform3ui = @ptrCast(c.wglGetProcAddress("glProgramUniform3ui"));
gl.programUniform3uiv = @ptrCast(c.wglGetProcAddress("glProgramUniform3uiv"));
gl.programUniform4i = @ptrCast(c.wglGetProcAddress("glProgramUniform4i"));
gl.programUniform4iv = @ptrCast(c.wglGetProcAddress("glProgramUniform4iv"));
gl.programUniform4f = @ptrCast(c.wglGetProcAddress("glProgramUniform4f"));
gl.programUniform4fv = @ptrCast(c.wglGetProcAddress("glProgramUniform4fv"));
gl.programUniform4d = @ptrCast(c.wglGetProcAddress("glProgramUniform4d"));
gl.programUniform4dv = @ptrCast(c.wglGetProcAddress("glProgramUniform4dv"));
gl.programUniform4ui = @ptrCast(c.wglGetProcAddress("glProgramUniform4ui"));
gl.programUniform4uiv = @ptrCast(c.wglGetProcAddress("glProgramUniform4uiv"));
gl.programUniformMatrix2fv = @ptrCast(c.wglGetProcAddress("glProgramUniformMatrix2fv"));
gl.programUniformMatrix3fv = @ptrCast(c.wglGetProcAddress("glProgramUniformMatrix3fv"));
gl.programUniformMatrix4fv = @ptrCast(c.wglGetProcAddress("glProgramUniformMatrix4fv"));
gl.programUniformMatrix2dv = @ptrCast(c.wglGetProcAddress("glProgramUniformMatrix2dv"));
gl.programUniformMatrix3dv = @ptrCast(c.wglGetProcAddress("glProgramUniformMatrix3dv"));
gl.programUniformMatrix4dv = @ptrCast(c.wglGetProcAddress("glProgramUniformMatrix4dv"));
gl.programUniformMatrix2x3fv = @ptrCast(c.wglGetProcAddress("glProgramUniformMatrix2x3fv"));
gl.programUniformMatrix3x2fv = @ptrCast(c.wglGetProcAddress("glProgramUniformMatrix3x2fv"));
gl.programUniformMatrix2x4fv = @ptrCast(c.wglGetProcAddress("glProgramUniformMatrix2x4fv"));
gl.programUniformMatrix4x2fv = @ptrCast(c.wglGetProcAddress("glProgramUniformMatrix4x2fv"));
gl.programUniformMatrix3x4fv = @ptrCast(c.wglGetProcAddress("glProgramUniformMatrix3x4fv"));
gl.programUniformMatrix4x3fv = @ptrCast(c.wglGetProcAddress("glProgramUniformMatrix4x3fv"));
gl.programUniformMatrix2x3dv = @ptrCast(c.wglGetProcAddress("glProgramUniformMatrix2x3dv"));
gl.programUniformMatrix3x2dv = @ptrCast(c.wglGetProcAddress("glProgramUniformMatrix3x2dv"));
gl.programUniformMatrix2x4dv = @ptrCast(c.wglGetProcAddress("glProgramUniformMatrix2x4dv"));
gl.programUniformMatrix4x2dv = @ptrCast(c.wglGetProcAddress("glProgramUniformMatrix4x2dv"));
gl.programUniformMatrix3x4dv = @ptrCast(c.wglGetProcAddress("glProgramUniformMatrix3x4dv"));
gl.programUniformMatrix4x3dv = @ptrCast(c.wglGetProcAddress("glProgramUniformMatrix4x3dv"));
gl.validateProgramPipeline = @ptrCast(c.wglGetProcAddress("glValidateProgramPipeline"));
gl.getProgramPipelineInfoLog = @ptrCast(c.wglGetProcAddress("glGetProgramPipelineInfoLog"));
gl.vertexAttribL1d = @ptrCast(c.wglGetProcAddress("glVertexAttribL1d"));
gl.vertexAttribL2d = @ptrCast(c.wglGetProcAddress("glVertexAttribL2d"));
gl.vertexAttribL3d = @ptrCast(c.wglGetProcAddress("glVertexAttribL3d"));
gl.vertexAttribL4d = @ptrCast(c.wglGetProcAddress("glVertexAttribL4d"));
gl.vertexAttribL1dv = @ptrCast(c.wglGetProcAddress("glVertexAttribL1dv"));
gl.vertexAttribL2dv = @ptrCast(c.wglGetProcAddress("glVertexAttribL2dv"));
gl.vertexAttribL3dv = @ptrCast(c.wglGetProcAddress("glVertexAttribL3dv"));
gl.vertexAttribL4dv = @ptrCast(c.wglGetProcAddress("glVertexAttribL4dv"));
gl.vertexAttribLPointer = @ptrCast(c.wglGetProcAddress("glVertexAttribLPointer"));
gl.getVertexAttribLdv = @ptrCast(c.wglGetProcAddress("glGetVertexAttribLdv"));
gl.viewportArrayv = @ptrCast(c.wglGetProcAddress("glViewportArrayv"));
gl.viewportIndexedf = @ptrCast(c.wglGetProcAddress("glViewportIndexedf"));
gl.viewportIndexedfv = @ptrCast(c.wglGetProcAddress("glViewportIndexedfv"));
gl.scissorArrayv = @ptrCast(c.wglGetProcAddress("glScissorArrayv"));
gl.scissorIndexed = @ptrCast(c.wglGetProcAddress("glScissorIndexed"));
gl.scissorIndexedv = @ptrCast(c.wglGetProcAddress("glScissorIndexedv"));
gl.depthRangeArrayv = @ptrCast(c.wglGetProcAddress("glDepthRangeArrayv"));
gl.depthRangeIndexed = @ptrCast(c.wglGetProcAddress("glDepthRangeIndexed"));
gl.getFloati_v = @ptrCast(c.wglGetProcAddress("glGetFloati_v"));
gl.getDoublei_v = @ptrCast(c.wglGetProcAddress("glGetDoublei_v"));
}
if (version >= 420) {
gl.drawArraysInstancedBaseInstance = @ptrCast(c.wglGetProcAddress("glDrawArraysInstancedBaseInstance"));
gl.drawElementsInstancedBaseInstance = @ptrCast(c.wglGetProcAddress("glDrawElementsInstancedBaseInstance"));
gl.drawElementsInstancedBaseVertexBaseInstance = @ptrCast(c.wglGetProcAddress("glDrawElementsInstancedBaseVertexBaseInstance"));
gl.getInternalformativ = @ptrCast(c.wglGetProcAddress("glGetInternalformativ"));
gl.getActiveAtomicCounterBufferiv = @ptrCast(c.wglGetProcAddress("glGetActiveAtomicCounterBufferiv"));
gl.bindImageTexture = @ptrCast(c.wglGetProcAddress("glBindImageTexture"));
gl.memoryBarrier = @ptrCast(c.wglGetProcAddress("glMemoryBarrier"));
gl.texStorage1D = @ptrCast(c.wglGetProcAddress("glTexStorage1D"));
gl.texStorage2D = @ptrCast(c.wglGetProcAddress("glTexStorage2D"));
gl.texStorage3D = @ptrCast(c.wglGetProcAddress("glTexStorage3D"));
gl.drawTransformFeedbackInstanced = @ptrCast(c.wglGetProcAddress("glDrawTransformFeedbackInstanced"));
gl.drawTransformFeedbackStreamInstanced = @ptrCast(c.wglGetProcAddress("glDrawTransformFeedbackStreamInstanced"));
}
if (version >= 430) {
gl.clearBufferData = @ptrCast(c.wglGetProcAddress("glClearBufferData"));
gl.clearBufferSubData = @ptrCast(c.wglGetProcAddress("glClearBufferSubData"));
gl.dispatchCompute = @ptrCast(c.wglGetProcAddress("glDispatchCompute"));
gl.dispatchComputeIndirect = @ptrCast(c.wglGetProcAddress("glDispatchComputeIndirect"));
gl.copyImageSubData = @ptrCast(c.wglGetProcAddress("glCopyImageSubData"));
gl.framebufferParameteri = @ptrCast(c.wglGetProcAddress("glFramebufferParameteri"));
gl.getFramebufferParameteriv = @ptrCast(c.wglGetProcAddress("glGetFramebufferParameteriv"));
gl.getInternalformati64v = @ptrCast(c.wglGetProcAddress("glGetInternalformati64v"));
gl.invalidateTexSubImage = @ptrCast(c.wglGetProcAddress("glInvalidateTexSubImage"));
gl.invalidateTexImage = @ptrCast(c.wglGetProcAddress("glInvalidateTexImage"));
gl.invalidateBufferSubData = @ptrCast(c.wglGetProcAddress("glInvalidateBufferSubData"));
gl.invalidateBufferData = @ptrCast(c.wglGetProcAddress("glInvalidateBufferData"));
gl.invalidateFramebuffer = @ptrCast(c.wglGetProcAddress("glInvalidateFramebuffer"));
gl.invalidateSubFramebuffer = @ptrCast(c.wglGetProcAddress("glInvalidateSubFramebuffer"));
gl.multiDrawArraysIndirect = @ptrCast(c.wglGetProcAddress("glMultiDrawArraysIndirect"));
gl.multiDrawElementsIndirect = @ptrCast(c.wglGetProcAddress("glMultiDrawElementsIndirect"));
gl.getProgramInterfaceiv = @ptrCast(c.wglGetProcAddress("glGetProgramInterfaceiv"));
gl.getProgramResourceIndex = @ptrCast(c.wglGetProcAddress("glGetProgramResourceIndex"));
gl.getProgramResourceName = @ptrCast(c.wglGetProcAddress("glGetProgramResourceName"));
gl.getProgramResourceiv = @ptrCast(c.wglGetProcAddress("glGetProgramResourceiv"));
gl.getProgramResourceLocation = @ptrCast(c.wglGetProcAddress("glGetProgramResourceLocation"));
gl.getProgramResourceLocationIndex = @ptrCast(c.wglGetProcAddress("glGetProgramResourceLocationIndex"));
gl.shaderStorageBlockBinding = @ptrCast(c.wglGetProcAddress("glShaderStorageBlockBinding"));
gl.texBufferRange = @ptrCast(c.wglGetProcAddress("glTexBufferRange"));
gl.texStorage2DMultisample = @ptrCast(c.wglGetProcAddress("glTexStorage2DMultisample"));
gl.texStorage3DMultisample = @ptrCast(c.wglGetProcAddress("glTexStorage3DMultisample"));
gl.textureView = @ptrCast(c.wglGetProcAddress("glTextureView"));
gl.bindVertexBuffer = @ptrCast(c.wglGetProcAddress("glBindVertexBuffer"));
gl.vertexAttribFormat = @ptrCast(c.wglGetProcAddress("glVertexAttribFormat"));
gl.vertexAttribIFormat = @ptrCast(c.wglGetProcAddress("glVertexAttribIFormat"));
gl.vertexAttribLFormat = @ptrCast(c.wglGetProcAddress("glVertexAttribLFormat"));
gl.vertexAttribBinding = @ptrCast(c.wglGetProcAddress("glVertexAttribBinding"));
gl.vertexBindingDivisor = @ptrCast(c.wglGetProcAddress("glVertexBindingDivisor"));
gl.debugMessageControl = @ptrCast(c.wglGetProcAddress("glDebugMessageControl"));
gl.debugMessageInsert = @ptrCast(c.wglGetProcAddress("glDebugMessageInsert"));
gl.debugMessageCallback = @ptrCast(c.wglGetProcAddress("glDebugMessageCallback"));
gl.getDebugMessageLog = @ptrCast(c.wglGetProcAddress("glGetDebugMessageLog"));
gl.pushDebugGroup = @ptrCast(c.wglGetProcAddress("glPushDebugGroup"));
gl.popDebugGroup = @ptrCast(c.wglGetProcAddress("glPopDebugGroup"));
gl.objectLabel = @ptrCast(c.wglGetProcAddress("glObjectLabel"));
gl.getObjectLabel = @ptrCast(c.wglGetProcAddress("glGetObjectLabel"));
gl.objectPtrLabel = @ptrCast(c.wglGetProcAddress("glObjectPtrLabel"));
gl.getObjectPtrLabel = @ptrCast(c.wglGetProcAddress("glGetObjectPtrLabel"));
}
if (version >= 440) {
gl.bufferStorage = @ptrCast(c.wglGetProcAddress("glBufferStorage"));
gl.clearTexImage = @ptrCast(c.wglGetProcAddress("glClearTexImage"));
gl.clearTexSubImage = @ptrCast(c.wglGetProcAddress("glClearTexSubImage"));
gl.bindBuffersBase = @ptrCast(c.wglGetProcAddress("glBindBuffersBase"));
gl.bindBuffersRange = @ptrCast(c.wglGetProcAddress("glBindBuffersRange"));
gl.bindTextures = @ptrCast(c.wglGetProcAddress("glBindTextures"));
gl.bindSamplers = @ptrCast(c.wglGetProcAddress("glBindSamplers"));
gl.bindImageTextures = @ptrCast(c.wglGetProcAddress("glBindImageTextures"));
gl.bindVertexBuffers = @ptrCast(c.wglGetProcAddress("glBindVertexBuffers"));
}
if (version >= 450) {
gl.clipControl = @ptrCast(c.wglGetProcAddress("glClipControl"));
gl.createTransformFeedbacks = @ptrCast(c.wglGetProcAddress("glCreateTransformFeedbacks"));
gl.transformFeedbackBufferBase = @ptrCast(c.wglGetProcAddress("glTransformFeedbackBufferBase"));
gl.transformFeedbackBufferRange = @ptrCast(c.wglGetProcAddress("glTransformFeedbackBufferRange"));
gl.getTransformFeedbackiv = @ptrCast(c.wglGetProcAddress("glGetTransformFeedbackiv"));
gl.getTransformFeedbacki_v = @ptrCast(c.wglGetProcAddress("glGetTransformFeedbacki_v"));
gl.getTransformFeedbacki64_v = @ptrCast(c.wglGetProcAddress("glGetTransformFeedbacki64_v"));
gl.createBuffers = @ptrCast(c.wglGetProcAddress("glCreateBuffers"));
gl.namedBufferStorage = @ptrCast(c.wglGetProcAddress("glNamedBufferStorage"));
gl.namedBufferData = @ptrCast(c.wglGetProcAddress("glNamedBufferData"));
gl.namedBufferSubData = @ptrCast(c.wglGetProcAddress("glNamedBufferSubData"));
gl.copyNamedBufferSubData = @ptrCast(c.wglGetProcAddress("glCopyNamedBufferSubData"));
gl.clearNamedBufferData = @ptrCast(c.wglGetProcAddress("glClearNamedBufferData"));
gl.clearNamedBufferSubData = @ptrCast(c.wglGetProcAddress("glClearNamedBufferSubData"));
gl.mapNamedBuffer = @ptrCast(c.wglGetProcAddress("glMapNamedBuffer"));
gl.mapNamedBufferRange = @ptrCast(c.wglGetProcAddress("glMapNamedBufferRange"));
gl.unmapNamedBuffer = @ptrCast(c.wglGetProcAddress("glUnmapNamedBuffer"));
gl.flushMappedNamedBufferRange = @ptrCast(c.wglGetProcAddress("glFlushMappedNamedBufferRange"));
gl.getNamedBufferParameteriv = @ptrCast(c.wglGetProcAddress("glGetNamedBufferParameteriv"));
gl.getNamedBufferParameteri64v = @ptrCast(c.wglGetProcAddress("glGetNamedBufferParameteri64v"));
gl.getNamedBufferPointerv = @ptrCast(c.wglGetProcAddress("glGetNamedBufferPointerv"));
gl.getNamedBufferSubData = @ptrCast(c.wglGetProcAddress("glGetNamedBufferSubData"));
gl.createFramebuffers = @ptrCast(c.wglGetProcAddress("glCreateFramebuffers"));
gl.namedFramebufferRenderbuffer = @ptrCast(c.wglGetProcAddress("glNamedFramebufferRenderbuffer"));
gl.namedFramebufferParameteri = @ptrCast(c.wglGetProcAddress("glNamedFramebufferParameteri"));
gl.namedFramebufferTexture = @ptrCast(c.wglGetProcAddress("glNamedFramebufferTexture"));
gl.namedFramebufferTextureLayer = @ptrCast(c.wglGetProcAddress("glNamedFramebufferTextureLayer"));
gl.namedFramebufferDrawBuffer = @ptrCast(c.wglGetProcAddress("glNamedFramebufferDrawBuffer"));
gl.namedFramebufferDrawBuffers = @ptrCast(c.wglGetProcAddress("glNamedFramebufferDrawBuffers"));
gl.namedFramebufferReadBuffer = @ptrCast(c.wglGetProcAddress("glNamedFramebufferReadBuffer"));
gl.invalidateNamedFramebufferData = @ptrCast(c.wglGetProcAddress("glInvalidateNamedFramebufferData"));
gl.invalidateNamedFramebufferSubData = @ptrCast(c.wglGetProcAddress("glInvalidateNamedFramebufferSubData"));
gl.clearNamedFramebufferiv = @ptrCast(c.wglGetProcAddress("glClearNamedFramebufferiv"));
gl.clearNamedFramebufferuiv = @ptrCast(c.wglGetProcAddress("glClearNamedFramebufferuiv"));
gl.clearNamedFramebufferfv = @ptrCast(c.wglGetProcAddress("glClearNamedFramebufferfv"));
gl.clearNamedFramebufferfi = @ptrCast(c.wglGetProcAddress("glClearNamedFramebufferfi"));
gl.blitNamedFramebuffer = @ptrCast(c.wglGetProcAddress("glBlitNamedFramebuffer"));
gl.checkNamedFramebufferStatus = @ptrCast(c.wglGetProcAddress("glCheckNamedFramebufferStatus"));
gl.getNamedFramebufferParameteriv = @ptrCast(c.wglGetProcAddress("glGetNamedFramebufferParameteriv"));
gl.getNamedFramebufferAttachmentParameteriv = @ptrCast(c.wglGetProcAddress("glGetNamedFramebufferAttachmentParameteriv"));
gl.createRenderbuffers = @ptrCast(c.wglGetProcAddress("glCreateRenderbuffers"));
gl.namedRenderbufferStorage = @ptrCast(c.wglGetProcAddress("glNamedRenderbufferStorage"));
gl.namedRenderbufferStorageMultisample = @ptrCast(c.wglGetProcAddress("glNamedRenderbufferStorageMultisample"));
gl.getNamedRenderbufferParameteriv = @ptrCast(c.wglGetProcAddress("glGetNamedRenderbufferParameteriv"));
gl.createTextures = @ptrCast(c.wglGetProcAddress("glCreateTextures"));
gl.textureBuffer = @ptrCast(c.wglGetProcAddress("glTextureBuffer"));
gl.textureBufferRange = @ptrCast(c.wglGetProcAddress("glTextureBufferRange"));
gl.textureStorage1D = @ptrCast(c.wglGetProcAddress("glTextureStorage1D"));
gl.textureStorage2D = @ptrCast(c.wglGetProcAddress("glTextureStorage2D"));
gl.textureStorage3D = @ptrCast(c.wglGetProcAddress("glTextureStorage3D"));
gl.textureStorage2DMultisample = @ptrCast(c.wglGetProcAddress("glTextureStorage2DMultisample"));
gl.textureStorage3DMultisample = @ptrCast(c.wglGetProcAddress("glTextureStorage3DMultisample"));
gl.textureSubImage1D = @ptrCast(c.wglGetProcAddress("glTextureSubImage1D"));
gl.textureSubImage2D = @ptrCast(c.wglGetProcAddress("glTextureSubImage2D"));
gl.textureSubImage3D = @ptrCast(c.wglGetProcAddress("glTextureSubImage3D"));
gl.compressedTextureSubImage1D = @ptrCast(c.wglGetProcAddress("glCompressedTextureSubImage1D"));
gl.compressedTextureSubImage2D = @ptrCast(c.wglGetProcAddress("glCompressedTextureSubImage2D"));
gl.compressedTextureSubImage3D = @ptrCast(c.wglGetProcAddress("glCompressedTextureSubImage3D"));
gl.copyTextureSubImage1D = @ptrCast(c.wglGetProcAddress("glCopyTextureSubImage1D"));
gl.copyTextureSubImage2D = @ptrCast(c.wglGetProcAddress("glCopyTextureSubImage2D"));
gl.copyTextureSubImage3D = @ptrCast(c.wglGetProcAddress("glCopyTextureSubImage3D"));
gl.textureParameterf = @ptrCast(c.wglGetProcAddress("glTextureParameterf"));
gl.textureParameterfv = @ptrCast(c.wglGetProcAddress("glTextureParameterfv"));
gl.textureParameteri = @ptrCast(c.wglGetProcAddress("glTextureParameteri"));
gl.textureParameterIiv = @ptrCast(c.wglGetProcAddress("glTextureParameterIiv"));
gl.textureParameterIuiv = @ptrCast(c.wglGetProcAddress("glTextureParameterIuiv"));
gl.textureParameteriv = @ptrCast(c.wglGetProcAddress("glTextureParameteriv"));
gl.generateTextureMipmap = @ptrCast(c.wglGetProcAddress("glGenerateTextureMipmap"));
gl.bindTextureUnit = @ptrCast(c.wglGetProcAddress("glBindTextureUnit"));
gl.getTextureImage = @ptrCast(c.wglGetProcAddress("glGetTextureImage"));
gl.getCompressedTextureImage = @ptrCast(c.wglGetProcAddress("glGetCompressedTextureImage"));
gl.getTextureLevelParameterfv = @ptrCast(c.wglGetProcAddress("glGetTextureLevelParameterfv"));
gl.getTextureLevelParameteriv = @ptrCast(c.wglGetProcAddress("glGetTextureLevelParameteriv"));
gl.getTextureParameterfv = @ptrCast(c.wglGetProcAddress("glGetTextureParameterfv"));
gl.getTextureParameterIiv = @ptrCast(c.wglGetProcAddress("glGetTextureParameterIiv"));
gl.getTextureParameterIuiv = @ptrCast(c.wglGetProcAddress("glGetTextureParameterIuiv"));
gl.getTextureParameteriv = @ptrCast(c.wglGetProcAddress("glGetTextureParameteriv"));
gl.createVertexArrays = @ptrCast(c.wglGetProcAddress("glCreateVertexArrays"));
gl.disableVertexArrayAttrib = @ptrCast(c.wglGetProcAddress("glDisableVertexArrayAttrib"));
gl.enableVertexArrayAttrib = @ptrCast(c.wglGetProcAddress("glEnableVertexArrayAttrib"));
gl.vertexArrayElementBuffer = @ptrCast(c.wglGetProcAddress("glVertexArrayElementBuffer"));
gl.vertexArrayVertexBuffer = @ptrCast(c.wglGetProcAddress("glVertexArrayVertexBuffer"));
gl.vertexArrayVertexBuffers = @ptrCast(c.wglGetProcAddress("glVertexArrayVertexBuffers"));
gl.vertexArrayAttribBinding = @ptrCast(c.wglGetProcAddress("glVertexArrayAttribBinding"));
gl.vertexArrayAttribFormat = @ptrCast(c.wglGetProcAddress("glVertexArrayAttribFormat"));
gl.vertexArrayAttribIFormat = @ptrCast(c.wglGetProcAddress("glVertexArrayAttribIFormat"));
gl.vertexArrayAttribLFormat = @ptrCast(c.wglGetProcAddress("glVertexArrayAttribLFormat"));
gl.vertexArrayBindingDivisor = @ptrCast(c.wglGetProcAddress("glVertexArrayBindingDivisor"));
gl.getVertexArrayiv = @ptrCast(c.wglGetProcAddress("glGetVertexArrayiv"));
gl.getVertexArrayIndexediv = @ptrCast(c.wglGetProcAddress("glGetVertexArrayIndexediv"));
gl.getVertexArrayIndexed64iv = @ptrCast(c.wglGetProcAddress("glGetVertexArrayIndexed64iv"));
gl.createSamplers = @ptrCast(c.wglGetProcAddress("glCreateSamplers"));
gl.createProgramPipelines = @ptrCast(c.wglGetProcAddress("glCreateProgramPipelines"));
gl.createQueries = @ptrCast(c.wglGetProcAddress("glCreateQueries"));
gl.getQueryBufferObjecti64v = @ptrCast(c.wglGetProcAddress("glGetQueryBufferObjecti64v"));
gl.getQueryBufferObjectiv = @ptrCast(c.wglGetProcAddress("glGetQueryBufferObjectiv"));
gl.getQueryBufferObjectui64v = @ptrCast(c.wglGetProcAddress("glGetQueryBufferObjectui64v"));
gl.getQueryBufferObjectuiv = @ptrCast(c.wglGetProcAddress("glGetQueryBufferObjectuiv"));
gl.memoryBarrierByRegion = @ptrCast(c.wglGetProcAddress("glMemoryBarrierByRegion"));
gl.getTextureSubImage = @ptrCast(c.wglGetProcAddress("glGetTextureSubImage"));
gl.getCompressedTextureSubImage = @ptrCast(c.wglGetProcAddress("glGetCompressedTextureSubImage"));
gl.getGraphicsResetStatus = @ptrCast(c.wglGetProcAddress("glGetGraphicsResetStatus"));
gl.getnCompressedTexImage = @ptrCast(c.wglGetProcAddress("glGetnCompressedTexImage"));
gl.getnTexImage = @ptrCast(c.wglGetProcAddress("glGetnTexImage"));
gl.getnUniformdv = @ptrCast(c.wglGetProcAddress("glGetnUniformdv"));
gl.getnUniformfv = @ptrCast(c.wglGetProcAddress("glGetnUniformfv"));
gl.getnUniformiv = @ptrCast(c.wglGetProcAddress("glGetnUniformiv"));
gl.getnUniformuiv = @ptrCast(c.wglGetProcAddress("glGetnUniformuiv"));
gl.readnPixels = @ptrCast(c.wglGetProcAddress("glReadnPixels"));
gl.textureBarrier = @ptrCast(c.wglGetProcAddress("glTextureBarrier"));
}
if (version >= 460) {
gl.specializeShader = @ptrCast(c.wglGetProcAddress("glSpecializeShader"));
gl.multiDrawArraysIndirectCount = @ptrCast(c.wglGetProcAddress("glMultiDrawArraysIndirectCount"));
gl.multiDrawElementsIndirectCount = @ptrCast(c.wglGetProcAddress("glMultiDrawElementsIndirectCount"));
gl.polygonOffsetClamp = @ptrCast(c.wglGetProcAddress("glPolygonOffsetClamp"));
}
}
};