using System; using System.Diagnostics.CodeAnalysis; using System.Runtime.InteropServices; using System.Security; using SDL2; using SlatedGameToolkit.Framework.Exceptions; namespace SlatedGameToolkit.Framework.Graphics.OpenGL { [SuppressUnmanagedCodeSecurity] [SuppressMessage("ReSharper", "StringLiteralTypo")] [SuppressMessage("ReSharper", "IdentifierTypo")] [SuppressMessage("ReSharper", "InconsistentNaming")] public class GLContext : IDisposable { #region OpenGLFunctions public IntPtr Handle { get; private set; } private bool disposed; [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLCULLFACEPROC(CullFaceMode mode); private PFNGLCULLFACEPROC glCullFace; public void CullFace(CullFaceMode mode) { glCullFace.Invoke(mode); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLFRONTFACEPROC(FrontFaceDirection mode); private PFNGLFRONTFACEPROC glFrontFace; public void FrontFace(FrontFaceDirection mode) { glFrontFace.Invoke(mode); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLHINTPROC(HintTarget target, HintMode mode); private PFNGLHINTPROC glHint; public void Hint(HintTarget target, HintMode mode) { glHint.Invoke(target, mode); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLLINEWIDTHPROC(float width); private PFNGLLINEWIDTHPROC glLineWidth; public void LineWidth(float width) { glLineWidth.Invoke(width); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLPOINTSIZEPROC(float size); private PFNGLPOINTSIZEPROC glPointSize; public void PointSize(float size) { glPointSize.Invoke(size); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLPOLYGONMODEPROC(MaterialFace face, PolygonMode mode); private PFNGLPOLYGONMODEPROC glPolygonMode; public void PolygonMode(MaterialFace face, PolygonMode mode) { glPolygonMode.Invoke(face, mode); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLSCISSORPROC(int x, int y, int width, int height); private PFNGLSCISSORPROC glScissor; public void Scissor(int x, int y, int width, int height) { glScissor.Invoke(x, y, width, height); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLTEXPARAMETERFPROC(TextureTarget target, TextureParameterName pname, float param); private PFNGLTEXPARAMETERFPROC glTexParameterf; public void TexParameterf(TextureTarget target, TextureParameterName pname, float param) { glTexParameterf.Invoke(target, pname, param); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLTEXPARAMETERFVPROC(TextureTarget target, TextureParameterName pname, float[] parameters); private PFNGLTEXPARAMETERFVPROC glTexParameterfv; public void TexParameterfv(TextureTarget target, TextureParameterName pname, float[] parameters) { glTexParameterfv.Invoke(target, pname, parameters); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLTEXPARAMETERIPROC(TextureTarget target, TextureParameterName pname, int param); private PFNGLTEXPARAMETERIPROC glTexParameteri; public void TexParameteri(TextureTarget target, TextureParameterName pname, int param) { glTexParameteri.Invoke(target, pname, param); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLTEXPARAMETERIVPROC(TextureTarget target, TextureParameterName pname, int[] parameters); private PFNGLTEXPARAMETERIVPROC glTexParameteriv; public void TexParameteriv(TextureTarget target, TextureParameterName pname, int[] parameters) { glTexParameteriv.Invoke(target, pname, parameters); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLTEXIMAGE1DPROC(TextureTarget target, int level, int internalformat, int width, int border, PixelFormat format, PixelType type, IntPtr pixels); private PFNGLTEXIMAGE1DPROC glTexImage1D; public void TexImage1D(TextureTarget target, int level, int internalformat, int width, int border, PixelFormat format, PixelType type, IntPtr pixels) { glTexImage1D.Invoke(target, level, internalformat, width, border, format, type, pixels); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLTEXIMAGE2DPROC(TextureTarget target, int level, InternalFormat internalformat, uint width, uint height, int border, PixelFormat format, PixelType type, IntPtr pixels); private PFNGLTEXIMAGE2DPROC glTexImage2D; public void TexImage2D(TextureTarget target, int level, InternalFormat internalformat, uint width, uint height, int border, PixelFormat format, PixelType type, IntPtr pixels) { glTexImage2D.Invoke(target, level, internalformat, width, height, border, format, type, pixels); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLDRAWBUFFERPROC(DrawBufferMode buf); private PFNGLDRAWBUFFERPROC glDrawBuffer; public void DrawBuffer(DrawBufferMode buf) { glDrawBuffer.Invoke(buf); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLCLEARPROC(ClearBufferMask mask); private PFNGLCLEARPROC glClear; public void Clear(ClearBufferMask mask) { glClear.Invoke(mask); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLCLEARCOLORPROC(float red, float green, float blue, float alpha); private PFNGLCLEARCOLORPROC glClearColor; public void ClearColor(float red, float green, float blue, float alpha) { glClearColor.Invoke(red, green, blue, alpha); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLCLEARSTENCILPROC(int s); private PFNGLCLEARSTENCILPROC glClearStencil; public void ClearStencil(int s) { glClearStencil.Invoke(s); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLCLEARDEPTHPROC(double depth); private PFNGLCLEARDEPTHPROC glClearDepth; public void ClearDepth(double depth) { glClearDepth.Invoke(depth); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLSTENCILMASKPROC(uint mask); private PFNGLSTENCILMASKPROC glStencilMask; public void StencilMask(uint mask) { glStencilMask.Invoke(mask); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLCOLORMASKPROC(bool red, bool green, bool blue, bool alpha); private PFNGLCOLORMASKPROC glColorMask; public void ColorMask(bool red, bool green, bool blue, bool alpha) { glColorMask.Invoke(red, green, blue, alpha); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLDEPTHMASKPROC(bool flag); private PFNGLDEPTHMASKPROC glDepthMask; public void DepthMask(bool flag) { glDepthMask.Invoke(flag); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLDISABLEPROC(EnableCap cap); private PFNGLDISABLEPROC glDisable; public void Disable(EnableCap cap) { glDisable.Invoke(cap); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLENABLEPROC(EnableCap cap); private PFNGLENABLEPROC glEnable; public void Enable(EnableCap cap) { glEnable.Invoke(cap); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLFINISHPROC(); private PFNGLFINISHPROC glFinish; public void Finish() { glFinish.Invoke(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLFLUSHPROC(); private PFNGLFLUSHPROC glFlush; public void Flush() { glFlush.Invoke(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLBLENDFUNCPROC(BlendingFactor sfactor, BlendingFactor dfactor); private PFNGLBLENDFUNCPROC glBlendFunc; public void BlendFunc(BlendingFactor sfactor, BlendingFactor dfactor) { glBlendFunc.Invoke(sfactor, dfactor); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLLOGICOPPROC(LogicOp opcode); private PFNGLLOGICOPPROC glLogicOp; public void LogicOp(LogicOp opcode) { glLogicOp.Invoke(opcode); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLSTENCILFUNCPROC(StencilFunction func, int reference, uint mask); private PFNGLSTENCILFUNCPROC glStencilFunc; public void StencilFunc(StencilFunction func, int reference, uint mask) { glStencilFunc.Invoke(func, reference, mask); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLSTENCILOPPROC(StencilOp fail, StencilOp zfail, StencilOp zpass); private PFNGLSTENCILOPPROC glStencilOp; public void StencilOp(StencilOp fail, StencilOp zfail, StencilOp zpass) { glStencilOp.Invoke(fail, zfail, zpass); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLDEPTHFUNCPROC(DepthFunction func); private PFNGLDEPTHFUNCPROC glDepthFunc; public void DepthFunc(DepthFunction func) { glDepthFunc.Invoke(func); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLPIXELSTOREFPROC(PixelStoreParameter pname, float param); private PFNGLPIXELSTOREFPROC glPixelStoref; public void PixelStoref(PixelStoreParameter pname, float param) { glPixelStoref.Invoke(pname, param); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLPIXELSTOREIPROC(PixelStoreParameter pname, int param); private PFNGLPIXELSTOREIPROC glPixelStorei; public void PixelStorei(PixelStoreParameter pname, int param) { glPixelStorei.Invoke(pname, param); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLREADBUFFERPROC(ReadBufferMode src); private PFNGLREADBUFFERPROC glReadBuffer; public void ReadBuffer(ReadBufferMode src) { glReadBuffer.Invoke(src); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLREADPIXELSPROC(int x, int y, int width, int height, PixelFormat format, PixelType type, out IntPtr pixels); private PFNGLREADPIXELSPROC glReadPixels; public void ReadPixels(int x, int y, int width, int height, PixelFormat format, PixelType type, out IntPtr pixels) { glReadPixels.Invoke(x, y, width, height, format, type, out pixels); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETBOOLEANVPROC(GetPName pname, out bool data); private PFNGLGETBOOLEANVPROC glGetBooleanv; public void GetBooleanv(GetPName pname, out bool data) { glGetBooleanv.Invoke(pname, out data); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETDOUBLEVPROC(GetPName pname, out double data); private PFNGLGETDOUBLEVPROC glGetDoublev; public void GetDoublev(GetPName pname, out double data) { glGetDoublev.Invoke(pname, out data); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate ErrorCode PFNGLGETERRORPROC(); private PFNGLGETERRORPROC glGetError; public ErrorCode GetError() { return glGetError.Invoke(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETFLOATVPROC(GetPName pname, out float data); private PFNGLGETFLOATVPROC glGetFloatv; public void GetFloatv(GetPName pname, out float data) { glGetFloatv.Invoke(pname, out data); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETINTEGERVPROC(GetPName pname, int[] data); private PFNGLGETINTEGERVPROC glGetIntegerv; public void GetIntegerv(GetPName pname, int[] data) { glGetIntegerv.Invoke(pname, data); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate IntPtr PFNGLGETSTRINGPROC(StringName name); private PFNGLGETSTRINGPROC glGetString; public IntPtr GetString(StringName name) { return glGetString.Invoke(name); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETTEXIMAGEPROC(TextureTarget target, int level, PixelFormat format, PixelType type, out IntPtr pixels); private PFNGLGETTEXIMAGEPROC glGetTexImage; public void GetTexImage(TextureTarget target, int level, PixelFormat format, PixelType type, out IntPtr pixels) { glGetTexImage.Invoke(target, level, format, type, out pixels); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETTEXPARAMETERFVPROC(TextureTarget target, GetTextureParameter pname, out float parameters); private PFNGLGETTEXPARAMETERFVPROC glGetTexParameterfv; public void GetTexParameterfv(TextureTarget target, GetTextureParameter pname, out float parameters) { glGetTexParameterfv.Invoke(target, pname, out parameters); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETTEXPARAMETERIVPROC(TextureTarget target, GetTextureParameter pname, out int parameters); private PFNGLGETTEXPARAMETERIVPROC glGetTexParameteriv; public void GetTexParameteriv(TextureTarget target, GetTextureParameter pname, out int parameters) { glGetTexParameteriv.Invoke(target, pname, out parameters); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETTEXLEVELPARAMETERFVPROC(TextureTarget target, int level, GetTextureParameter pname, out float parameters); private PFNGLGETTEXLEVELPARAMETERFVPROC glGetTexLevelParameterfv; public void GetTexLevelParameterfv(TextureTarget target, int level, GetTextureParameter pname, out float parameters) { glGetTexLevelParameterfv.Invoke(target, level, pname, out parameters); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETTEXLEVELPARAMETERIVPROC(TextureTarget target, int level, GetTextureParameter pname, out int parameters); private PFNGLGETTEXLEVELPARAMETERIVPROC glGetTexLevelParameteriv; public void GetTexLevelParameteriv(TextureTarget target, int level, GetTextureParameter pname, out int parameters) { glGetTexLevelParameteriv.Invoke(target, level, pname, out parameters); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate bool PFNGLISENABLEDPROC(EnableCap cap); private PFNGLISENABLEDPROC glIsEnabled; public bool IsEnabled(EnableCap cap) { return glIsEnabled.Invoke(cap); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLDEPTHRANGEPROC(double n, double f); private PFNGLDEPTHRANGEPROC glDepthRange; public void DepthRange(double n, double f) { glDepthRange.Invoke(n, f); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVIEWPORTPROC(int x, int y, int width, int height); private PFNGLVIEWPORTPROC glViewport; public void Viewport(int x, int y, int width, int height) { glViewport.Invoke(x, y, width, height); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLDRAWARRAYSPROC(PrimitiveType mode, int first, int count); private PFNGLDRAWARRAYSPROC glDrawArrays; public void DrawArrays(PrimitiveType mode, int first, int count) { glDrawArrays.Invoke(mode, first, count); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLDRAWELEMENTSPROC(PrimitiveType mode, int count, DrawElementsType type, IntPtr indices); private PFNGLDRAWELEMENTSPROC glDrawElements; public void DrawElements(PrimitiveType mode, int count, DrawElementsType type, IntPtr indices) { glDrawElements.Invoke(mode, count, type, indices); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLPOLYGONOFFSETPROC(float factor, float units); private PFNGLPOLYGONOFFSETPROC glPolygonOffset; public void PolygonOffset(float factor, float units) { glPolygonOffset.Invoke(factor, units); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLCOPYTEXIMAGE1DPROC(TextureTarget target, int level, InternalFormat internalformat, int x, int y, int width, int border); private PFNGLCOPYTEXIMAGE1DPROC glCopyTexImage1D; public void CopyTexImage1D(TextureTarget target, int level, InternalFormat internalformat, int x, int y, int width, int border) { glCopyTexImage1D.Invoke(target, level, internalformat, x, y, width, border); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLCOPYTEXIMAGE2DPROC(TextureTarget target, int level, InternalFormat internalformat, int x, int y, int width, int height, int border); private PFNGLCOPYTEXIMAGE2DPROC glCopyTexImage2D; public void CopyTexImage2D(TextureTarget target, int level, InternalFormat internalformat, int x, int y, int width, int height, int border) { glCopyTexImage2D.Invoke(target, level, internalformat, x, y, width, height, border); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLCOPYTEXSUBIMAGE1DPROC(TextureTarget target, int level, int xoffset, int x, int y, int width); private PFNGLCOPYTEXSUBIMAGE1DPROC glCopyTexSubImage1D; public void CopyTexSubImage1D(TextureTarget target, int level, int xoffset, int x, int y, int width) { glCopyTexSubImage1D.Invoke(target, level, xoffset, x, y, width); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLCOPYTEXSUBIMAGE2DPROC(TextureTarget target, int level, int xoffset, int yoffset, int x, int y, int width, int height); private PFNGLCOPYTEXSUBIMAGE2DPROC glCopyTexSubImage2D; public void CopyTexSubImage2D(TextureTarget target, int level, int xoffset, int yoffset, int x, int y, int width, int height) { glCopyTexSubImage2D.Invoke(target, level, xoffset, yoffset, x, y, width, height); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLTEXSUBIMAGE1DPROC(TextureTarget target, int level, int xoffset, int width, PixelFormat format, PixelType type, IntPtr pixels); private PFNGLTEXSUBIMAGE1DPROC glTexSubImage1D; public void TexSubImage1D(TextureTarget target, int level, int xoffset, int width, PixelFormat format, PixelType type, IntPtr pixels) { glTexSubImage1D.Invoke(target, level, xoffset, width, format, type, pixels); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLTEXSUBIMAGE2DPROC(TextureTarget target, int level, int xoffset, int yoffset, int width, int height, PixelFormat format, PixelType type, IntPtr pixels); private PFNGLTEXSUBIMAGE2DPROC glTexSubImage2D; public void TexSubImage2D(TextureTarget target, int level, int xoffset, int yoffset, int width, int height, PixelFormat format, PixelType type, IntPtr pixels) { glTexSubImage2D.Invoke(target, level, xoffset, yoffset, width, height, format, type, pixels); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLBINDTEXTUREPROC(TextureTarget target, uint texture); private PFNGLBINDTEXTUREPROC glBindTexture; public void BindTexture(TextureTarget target, uint texture) { glBindTexture.Invoke(target, texture); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLDELETETEXTURESPROC(int n, uint[] textures); private PFNGLDELETETEXTURESPROC glDeleteTextures; public void DeleteTextures(int n, uint[] textures) { glDeleteTextures.Invoke(n, textures); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGENTEXTURESPROC(int n, uint[] textures); private PFNGLGENTEXTURESPROC glGenTextures; public void GenTextures(int n, uint[] textures) { glGenTextures.Invoke(n, textures); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate bool PFNGLISTEXTUREPROC(uint texture); private PFNGLISTEXTUREPROC glIsTexture; public bool IsTexture(uint texture) { return glIsTexture.Invoke(texture); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLDRAWRANGEELEMENTSPROC(PrimitiveType mode, uint start, uint end, int count, DrawElementsType type, IntPtr indices); private PFNGLDRAWRANGEELEMENTSPROC glDrawRangeElements; public void DrawRangeElements(PrimitiveType mode, uint start, uint end, int count, DrawElementsType type, IntPtr indices) { glDrawRangeElements.Invoke(mode, start, end, count, type, indices); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLTEXIMAGE3DPROC(TextureTarget target, int level, int internalformat, int width, int height, int depth, int border, PixelFormat format, PixelType type, IntPtr pixels); private PFNGLTEXIMAGE3DPROC glTexImage3D; public void TexImage3D(TextureTarget target, int level, int internalformat, int width, int height, int depth, int border, PixelFormat format, PixelType type, IntPtr pixels) { glTexImage3D.Invoke(target, level, internalformat, width, height, depth, border, format, type, pixels); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLTEXSUBIMAGE3DPROC(TextureTarget target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, PixelFormat format, PixelType type, IntPtr pixels); private PFNGLTEXSUBIMAGE3DPROC glTexSubImage3D; public void TexSubImage3D(TextureTarget target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, PixelFormat format, PixelType type, IntPtr pixels) { glTexSubImage3D.Invoke(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLCOPYTEXSUBIMAGE3DPROC(TextureTarget target, int level, int xoffset, int yoffset, int zoffset, int x, int y, int width, int height); private PFNGLCOPYTEXSUBIMAGE3DPROC glCopyTexSubImage3D; public void CopyTexSubImage3D(TextureTarget target, int level, int xoffset, int yoffset, int zoffset, int x, int y, int width, int height) { glCopyTexSubImage3D.Invoke(target, level, xoffset, yoffset, zoffset, x, y, width, height); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLACTIVETEXTUREPROC(TextureUnit texture); private PFNGLACTIVETEXTUREPROC glActiveTexture; public void ActiveTexture(TextureUnit texture) { glActiveTexture.Invoke(texture); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLSAMPLECOVERAGEPROC(float value, bool invert); private PFNGLSAMPLECOVERAGEPROC glSampleCoverage; public void SampleCoverage(float value, bool invert) { glSampleCoverage.Invoke(value, invert); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLCOMPRESSEDTEXIMAGE3DPROC(TextureTarget target, int level, InternalFormat internalformat, int width, int height, int depth, int border, int imageSize, IntPtr data); private PFNGLCOMPRESSEDTEXIMAGE3DPROC glCompressedTexImage3D; public void CompressedTexImage3D(TextureTarget target, int level, InternalFormat internalformat, int width, int height, int depth, int border, int imageSize, IntPtr data) { glCompressedTexImage3D.Invoke(target, level, internalformat, width, height, depth, border, imageSize, data); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLCOMPRESSEDTEXIMAGE2DPROC(TextureTarget target, int level, InternalFormat internalformat, int width, int height, int border, int imageSize, IntPtr data); private PFNGLCOMPRESSEDTEXIMAGE2DPROC glCompressedTexImage2D; public void CompressedTexImage2D(TextureTarget target, int level, InternalFormat internalformat, int width, int height, int border, int imageSize, IntPtr data) { glCompressedTexImage2D.Invoke(target, level, internalformat, width, height, border, imageSize, data); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLCOMPRESSEDTEXIMAGE1DPROC(TextureTarget target, int level, InternalFormat internalformat, int width, int border, int imageSize, IntPtr data); private PFNGLCOMPRESSEDTEXIMAGE1DPROC glCompressedTexImage1D; public void CompressedTexImage1D(TextureTarget target, int level, InternalFormat internalformat, int width, int border, int imageSize, IntPtr data) { glCompressedTexImage1D.Invoke(target, level, internalformat, width, border, imageSize, data); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC(TextureTarget target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, PixelFormat format, int imageSize, IntPtr data); private PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glCompressedTexSubImage3D; public void CompressedTexSubImage3D(TextureTarget target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, PixelFormat format, int imageSize, IntPtr data) { glCompressedTexSubImage3D.Invoke(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC(TextureTarget target, int level, int xoffset, int yoffset, int width, int height, PixelFormat format, int imageSize, IntPtr data); private PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glCompressedTexSubImage2D; public void CompressedTexSubImage2D(TextureTarget target, int level, int xoffset, int yoffset, int width, int height, PixelFormat format, int imageSize, IntPtr data) { glCompressedTexSubImage2D.Invoke(target, level, xoffset, yoffset, width, height, format, imageSize, data); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC(TextureTarget target, int level, int xoffset, int width, PixelFormat format, int imageSize, IntPtr data); private PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glCompressedTexSubImage1D; public void CompressedTexSubImage1D(TextureTarget target, int level, int xoffset, int width, PixelFormat format, int imageSize, IntPtr data) { glCompressedTexSubImage1D.Invoke(target, level, xoffset, width, format, imageSize, data); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETCOMPRESSEDTEXIMAGEPROC(TextureTarget target, int level, out IntPtr img); private PFNGLGETCOMPRESSEDTEXIMAGEPROC glGetCompressedTexImage; public void GetCompressedTexImage(TextureTarget target, int level, out IntPtr img) { glGetCompressedTexImage.Invoke(target, level, out img); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLBLENDFUNCSEPARATEPROC(BlendingFactor sfactorRGB, BlendingFactor dfactorRGB, BlendingFactor sfactorAlpha, BlendingFactor dfactorAlpha); private PFNGLBLENDFUNCSEPARATEPROC glBlendFuncSeparate; public void BlendFuncSeparate(BlendingFactor sfactorRGB, BlendingFactor dfactorRGB, BlendingFactor sfactorAlpha, BlendingFactor dfactorAlpha) { glBlendFuncSeparate.Invoke(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLMULTIDRAWARRAYSPROC(PrimitiveType mode, int[] first, int[] count, int drawcount); private PFNGLMULTIDRAWARRAYSPROC glMultiDrawArrays; public void MultiDrawArrays(PrimitiveType mode, int[] first, int[] count, int drawcount) { glMultiDrawArrays.Invoke(mode, first, count, drawcount); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLMULTIDRAWELEMENTSPROC(PrimitiveType mode, int[] count, DrawElementsType type, IntPtr indices, int drawcount); private PFNGLMULTIDRAWELEMENTSPROC glMultiDrawElements; public void MultiDrawElements(PrimitiveType mode, int[] count, DrawElementsType type, IntPtr indices, int drawcount) { glMultiDrawElements.Invoke(mode, count, type, indices, drawcount); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLPOINTPARAMETERFPROC(int pname, float param); private PFNGLPOINTPARAMETERFPROC glPointParameterf; public void PointParameterf(int pname, float param) { glPointParameterf.Invoke(pname, param); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLPOINTPARAMETERFVPROC(int pname, float[] parameters); private PFNGLPOINTPARAMETERFVPROC glPointParameterfv; public void PointParameterfv(int pname, float[] parameters) { glPointParameterfv.Invoke(pname, parameters); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLPOINTPARAMETERIPROC(int pname, int param); private PFNGLPOINTPARAMETERIPROC glPointParameteri; public void PointParameteri(int pname, int param) { glPointParameteri.Invoke(pname, param); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLPOINTPARAMETERIVPROC(int pname, int[] parameters); private PFNGLPOINTPARAMETERIVPROC glPointParameteriv; public void PointParameteriv(int pname, int[] parameters) { glPointParameteriv.Invoke(pname, parameters); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIBP4UIVPROC(uint index, VertexAttribPointerType type, bool normalized, uint[] value); private PFNGLVERTEXATTRIBP4UIVPROC glVertexAttribP4uiv; public void VertexAttribP4uiv(uint index, VertexAttribPointerType type, bool normalized, uint[] value) { glVertexAttribP4uiv.Invoke(index, type, normalized, value); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIBP4UIPROC(uint index, VertexAttribPointerType type, bool normalized, uint value); private PFNGLVERTEXATTRIBP4UIPROC glVertexAttribP4ui; public void VertexAttribP4ui(uint index, VertexAttribPointerType type, bool normalized, uint value) { glVertexAttribP4ui.Invoke(index, type, normalized, value); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIBP3UIVPROC(uint index, VertexAttribPointerType type, bool normalized, uint[] value); private PFNGLVERTEXATTRIBP3UIVPROC glVertexAttribP3uiv; public void VertexAttribP3uiv(uint index, VertexAttribPointerType type, bool normalized, uint[] value) { glVertexAttribP3uiv.Invoke(index, type, normalized, value); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIBP3UIPROC(uint index, VertexAttribPointerType type, bool normalized, uint value); private PFNGLVERTEXATTRIBP3UIPROC glVertexAttribP3ui; public void VertexAttribP3ui(uint index, VertexAttribPointerType type, bool normalized, uint value) { glVertexAttribP3ui.Invoke(index, type, normalized, value); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIBP2UIVPROC(uint index, VertexAttribPointerType type, bool normalized, uint[] value); private PFNGLVERTEXATTRIBP2UIVPROC glVertexAttribP2uiv; public void VertexAttribP2uiv(uint index, VertexAttribPointerType type, bool normalized, uint[] value) { glVertexAttribP2uiv.Invoke(index, type, normalized, value); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIBP2UIPROC(uint index, VertexAttribPointerType type, bool normalized, uint value); private PFNGLVERTEXATTRIBP2UIPROC glVertexAttribP2ui; public void VertexAttribP2ui(uint index, VertexAttribPointerType type, bool normalized, uint value) { glVertexAttribP2ui.Invoke(index, type, normalized, value); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIBP1UIVPROC(uint index, VertexAttribPointerType type, bool normalized, uint[] value); private PFNGLVERTEXATTRIBP1UIVPROC glVertexAttribP1uiv; public void VertexAttribP1uiv(uint index, VertexAttribPointerType type, bool normalized, uint[] value) { glVertexAttribP1uiv.Invoke(index, type, normalized, value); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIBP1UIPROC(uint index, VertexAttribPointerType type, bool normalized, uint value); private PFNGLVERTEXATTRIBP1UIPROC glVertexAttribP1ui; public void VertexAttribP1ui(uint index, VertexAttribPointerType type, bool normalized, uint value) { glVertexAttribP1ui.Invoke(index, type, normalized, value); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIBDIVISORPROC(uint index, uint divisor); private PFNGLVERTEXATTRIBDIVISORPROC glVertexAttribDivisor; public void VertexAttribDivisor(uint index, uint divisor) { glVertexAttribDivisor.Invoke(index, divisor); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETQUERYOBJECTUI64VPROC(uint id, QueryObjectParameterName pname, out ulong parameters); private PFNGLGETQUERYOBJECTUI64VPROC glGetQueryObjectui64v; public void GetQueryObjectui64v(uint id, QueryObjectParameterName pname, out ulong parameters) { glGetQueryObjectui64v.Invoke(id, pname, out parameters); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETQUERYOBJECTI64VPROC(uint id, QueryObjectParameterName pname, out long parameters); private PFNGLGETQUERYOBJECTI64VPROC glGetQueryObjecti64v; public void GetQueryObjecti64v(uint id, QueryObjectParameterName pname, out long parameters) { glGetQueryObjecti64v.Invoke(id, pname, out parameters); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLQUERYCOUNTERPROC(uint id, QueryCounterTarget target); private PFNGLQUERYCOUNTERPROC glQueryCounter; public void QueryCounter(uint id, QueryCounterTarget target) { glQueryCounter.Invoke(id, target); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETSAMPLERPARAMETERIUIVPROC(uint sampler, SamplerParameterName pname, out uint parameters); private PFNGLGETSAMPLERPARAMETERIUIVPROC glGetSamplerParameterIuiv; public void GetSamplerParameterIuiv(uint sampler, SamplerParameterName pname, out uint parameters) { glGetSamplerParameterIuiv.Invoke(sampler, pname, out parameters); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETSAMPLERPARAMETERFVPROC(uint sampler, SamplerParameterName pname, out float parameters); private PFNGLGETSAMPLERPARAMETERFVPROC glGetSamplerParameterfv; public void GetSamplerParameterfv(uint sampler, SamplerParameterName pname, out float parameters) { glGetSamplerParameterfv.Invoke(sampler, pname, out parameters); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETSAMPLERPARAMETERIIVPROC(uint sampler, SamplerParameterName pname, out int parameters); private PFNGLGETSAMPLERPARAMETERIIVPROC glGetSamplerParameterIiv; public void GetSamplerParameterIiv(uint sampler, SamplerParameterName pname, out int parameters) { glGetSamplerParameterIiv.Invoke(sampler, pname, out parameters); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETSAMPLERPARAMETERIVPROC(uint sampler, SamplerParameterName pname, out int parameters); private PFNGLGETSAMPLERPARAMETERIVPROC glGetSamplerParameteriv; public void GetSamplerParameteriv(uint sampler, SamplerParameterName pname, out int parameters) { glGetSamplerParameteriv.Invoke(sampler, pname, out parameters); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLSAMPLERPARAMETERIUIVPROC(uint sampler, SamplerParameterName pname, uint[] param); private PFNGLSAMPLERPARAMETERIUIVPROC glSamplerParameterIuiv; public void SamplerParameterIuiv(uint sampler, SamplerParameterName pname, uint[] param) { glSamplerParameterIuiv.Invoke(sampler, pname, param); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLSAMPLERPARAMETERIIVPROC(uint sampler, SamplerParameterName pname, int[] param); private PFNGLSAMPLERPARAMETERIIVPROC glSamplerParameterIiv; public void SamplerParameterIiv(uint sampler, SamplerParameterName pname, int[] param) { glSamplerParameterIiv.Invoke(sampler, pname, param); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLSAMPLERPARAMETERFVPROC(uint sampler, SamplerParameterName pname, float[] param); private PFNGLSAMPLERPARAMETERFVPROC glSamplerParameterfv; public void SamplerParameterfv(uint sampler, SamplerParameterName pname, float[] param) { glSamplerParameterfv.Invoke(sampler, pname, param); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLSAMPLERPARAMETERFPROC(uint sampler, SamplerParameterName pname, float param); private PFNGLSAMPLERPARAMETERFPROC glSamplerParameterf; public void SamplerParameterf(uint sampler, SamplerParameterName pname, float param) { glSamplerParameterf.Invoke(sampler, pname, param); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLSAMPLERPARAMETERIVPROC(uint sampler, SamplerParameterName pname, int[] param); private PFNGLSAMPLERPARAMETERIVPROC glSamplerParameteriv; public void SamplerParameteriv(uint sampler, SamplerParameterName pname, int[] param) { glSamplerParameteriv.Invoke(sampler, pname, param); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLSAMPLERPARAMETERIPROC(uint sampler, SamplerParameterName pname, int param); private PFNGLSAMPLERPARAMETERIPROC glSamplerParameteri; public void SamplerParameteri(uint sampler, SamplerParameterName pname, int param) { glSamplerParameteri.Invoke(sampler, pname, param); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLBINDSAMPLERPROC(uint unit, uint sampler); private PFNGLBINDSAMPLERPROC glBindSampler; public void BindSampler(uint unit, uint sampler) { glBindSampler.Invoke(unit, sampler); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate bool PFNGLISSAMPLERPROC(uint sampler); private PFNGLISSAMPLERPROC glIsSampler; public bool IsSampler(uint sampler) { return glIsSampler.Invoke(sampler); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLDELETESAMPLERSPROC(int count, uint[] samplers); private PFNGLDELETESAMPLERSPROC glDeleteSamplers; public void DeleteSamplers(int count, uint[] samplers) { glDeleteSamplers.Invoke(count, samplers); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGENSAMPLERSPROC(int count, out uint samplers); private PFNGLGENSAMPLERSPROC glGenSamplers; public void GenSamplers(int count, out uint samplers) { glGenSamplers.Invoke(count, out samplers); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate int PFNGLGETFRAGDATAINDEXPROC(uint program, sbyte[] name); private PFNGLGETFRAGDATAINDEXPROC glGetFragDataIndex; public int GetFragDataIndex(uint program, sbyte[] name) { return glGetFragDataIndex.Invoke(program, name); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLBINDFRAGDATALOCATIONINDEXEDPROC(uint program, uint colorNumber, uint index, sbyte[] name); private PFNGLBINDFRAGDATALOCATIONINDEXEDPROC glBindFragDataLocationIndexed; public void BindFragDataLocationIndexed(uint program, uint colorNumber, uint index, sbyte[] name) { glBindFragDataLocationIndexed.Invoke(program, colorNumber, index, name); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLBLENDCOLORPROC(float red, float green, float blue, float alpha); private PFNGLBLENDCOLORPROC glBlendColor; public void BlendColor(float red, float green, float blue, float alpha) { glBlendColor.Invoke(red, green, blue, alpha); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLBLENDEQUATIONPROC(BlendEquationModeEXT mode); private PFNGLBLENDEQUATIONPROC glBlendEquation; public void BlendEquation(BlendEquationModeEXT mode) { glBlendEquation.Invoke(mode); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGENQUERIESPROC(int n, out uint ids); private PFNGLGENQUERIESPROC glGenQueries; public void GenQueries(int n, out uint ids) { glGenQueries.Invoke(n, out ids); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLDELETEQUERIESPROC(int n, uint[] ids); private PFNGLDELETEQUERIESPROC glDeleteQueries; public void DeleteQueries(int n, uint[] ids) { glDeleteQueries.Invoke(n, ids); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate bool PFNGLISQUERYPROC(uint id); private PFNGLISQUERYPROC glIsQuery; public bool IsQuery(uint id) { return glIsQuery.Invoke(id); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLBEGINQUERYPROC(QueryTarget target, uint id); private PFNGLBEGINQUERYPROC glBeginQuery; public void BeginQuery(QueryTarget target, uint id) { glBeginQuery.Invoke(target, id); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLENDQUERYPROC(QueryTarget target); private PFNGLENDQUERYPROC glEndQuery; public void EndQuery(QueryTarget target) { glEndQuery.Invoke(target); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETQUERYIVPROC(QueryTarget target, QueryParameterName pname, out int parameters); private PFNGLGETQUERYIVPROC glGetQueryiv; public void GetQueryiv(QueryTarget target, QueryParameterName pname, out int parameters) { glGetQueryiv.Invoke(target, pname, out parameters); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETQUERYOBJECTIVPROC(uint id, QueryObjectParameterName pname, out int parameters); private PFNGLGETQUERYOBJECTIVPROC glGetQueryObjectiv; public void GetQueryObjectiv(uint id, QueryObjectParameterName pname, out int parameters) { glGetQueryObjectiv.Invoke(id, pname, out parameters); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETQUERYOBJECTUIVPROC(uint id, QueryObjectParameterName pname, out uint parameters); private PFNGLGETQUERYOBJECTUIVPROC glGetQueryObjectuiv; public void GetQueryObjectuiv(uint id, QueryObjectParameterName pname, out uint parameters) { glGetQueryObjectuiv.Invoke(id, pname, out parameters); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLBINDBUFFERPROC(BufferTargetARB target, uint buffer); private PFNGLBINDBUFFERPROC glBindBuffer; public void BindBuffer(BufferTargetARB target, uint buffer) { glBindBuffer.Invoke(target, buffer); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLDELETEBUFFERSPROC(int n, uint[] buffers); private PFNGLDELETEBUFFERSPROC glDeleteBuffers; public void DeleteBuffers(int n, uint[] buffers) { glDeleteBuffers.Invoke(n, buffers); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGENBUFFERSPROC(int n, uint[] buffers); private PFNGLGENBUFFERSPROC glGenBuffers; public void GenBuffers(int n, uint[] buffers) { glGenBuffers.Invoke(n, buffers); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate bool PFNGLISBUFFERPROC(uint buffer); private PFNGLISBUFFERPROC glIsBuffer; public bool IsBuffer(uint buffer) { return glIsBuffer.Invoke(buffer); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLBUFFERDATAPROC(BufferTargetARB target, uint size, IntPtr data, BufferUsageARB usage); private PFNGLBUFFERDATAPROC glBufferData; public void BufferData(BufferTargetARB target, uint size, IntPtr data, BufferUsageARB usage) { glBufferData.Invoke(target, size, data, usage); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLBUFFERSUBDATAPROC(BufferTargetARB target, IntPtr offset, UIntPtr size, IntPtr data); private PFNGLBUFFERSUBDATAPROC glBufferSubData; public void BufferSubData(BufferTargetARB target, IntPtr offset, UIntPtr size, IntPtr data) { glBufferSubData.Invoke(target, offset, size, data); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETBUFFERSUBDATAPROC(BufferTargetARB target, IntPtr offset, IntPtr size, out IntPtr data); private PFNGLGETBUFFERSUBDATAPROC glGetBufferSubData; public void GetBufferSubData(BufferTargetARB target, IntPtr offset, IntPtr size, out IntPtr data) { glGetBufferSubData.Invoke(target, offset, size, out data); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate IntPtr PFNGLMAPBUFFERPROC(BufferTargetARB target, BufferAccessARB access); private PFNGLMAPBUFFERPROC glMapBuffer; public IntPtr MapBuffer(BufferTargetARB target, BufferAccessARB access) { return glMapBuffer.Invoke(target, access); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate bool PFNGLUNMAPBUFFERPROC(BufferTargetARB target); private PFNGLUNMAPBUFFERPROC glUnmapBuffer; public bool UnmapBuffer(BufferTargetARB target) { return glUnmapBuffer.Invoke(target); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETBUFFERPARAMETERIVPROC(BufferTargetARB target, int pname, out int parameters); private PFNGLGETBUFFERPARAMETERIVPROC glGetBufferParameteriv; public void GetBufferParameteriv(BufferTargetARB target, int pname, out int parameters) { glGetBufferParameteriv.Invoke(target, pname, out parameters); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETBUFFERPOINTERVPROC(BufferTargetARB target, int pname, out IntPtr parameters); private PFNGLGETBUFFERPOINTERVPROC glGetBufferPointerv; public void GetBufferPointerv(BufferTargetARB target, int pname, out IntPtr parameters) { glGetBufferPointerv.Invoke(target, pname, out parameters); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLBLENDEQUATIONSEPARATEPROC(BlendEquationModeEXT modeRGB, BlendEquationModeEXT modeAlpha); private PFNGLBLENDEQUATIONSEPARATEPROC glBlendEquationSeparate; public void BlendEquationSeparate(BlendEquationModeEXT modeRGB, BlendEquationModeEXT modeAlpha) { glBlendEquationSeparate.Invoke(modeRGB, modeAlpha); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLDRAWBUFFERSPROC(int n, int[] bufs); private PFNGLDRAWBUFFERSPROC glDrawBuffers; public void DrawBuffers(int n, int[] bufs) { glDrawBuffers.Invoke(n, bufs); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLSTENCILOPSEPARATEPROC(StencilFaceDirection face, StencilOp sfail, StencilOp dpfail, StencilOp dppass); private PFNGLSTENCILOPSEPARATEPROC glStencilOpSeparate; public void StencilOpSeparate(StencilFaceDirection face, StencilOp sfail, StencilOp dpfail, StencilOp dppass) { glStencilOpSeparate.Invoke(face, sfail, dpfail, dppass); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLSTENCILFUNCSEPARATEPROC(StencilFaceDirection face, StencilFunction func, int reference, uint mask); private PFNGLSTENCILFUNCSEPARATEPROC glStencilFuncSeparate; public void StencilFuncSeparate(StencilFaceDirection face, StencilFunction func, int reference, uint mask) { glStencilFuncSeparate.Invoke(face, func, reference, mask); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLSTENCILMASKSEPARATEPROC(StencilFaceDirection face, uint mask); private PFNGLSTENCILMASKSEPARATEPROC glStencilMaskSeparate; public void StencilMaskSeparate(StencilFaceDirection face, uint mask) { glStencilMaskSeparate.Invoke(face, mask); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLATTACHSHADERPROC(uint program, uint shader); private PFNGLATTACHSHADERPROC glAttachShader; public void AttachShader(uint program, uint shader) { glAttachShader.Invoke(program, shader); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLBINDATTRIBLOCATIONPROC(uint program, uint index, sbyte[] name); private PFNGLBINDATTRIBLOCATIONPROC glBindAttribLocation; public void BindAttribLocation(uint program, uint index, sbyte[] name) { glBindAttribLocation.Invoke(program, index, name); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLCOMPILESHADERPROC(uint shader); private PFNGLCOMPILESHADERPROC glCompileShader; public void CompileShader(uint shader) { glCompileShader.Invoke(shader); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate uint PFNGLCREATEPROGRAMPROC(); private PFNGLCREATEPROGRAMPROC glCreateProgram; public uint CreateProgram() { uint handle = glCreateProgram.Invoke(); DetectGLError(); return handle; } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate uint PFNGLCREATESHADERPROC(ShaderType type); private PFNGLCREATESHADERPROC glCreateShader; public uint CreateShader(ShaderType type) { uint handle = glCreateShader.Invoke(type); DetectGLError(); return handle; } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLDELETEPROGRAMPROC(uint program); private PFNGLDELETEPROGRAMPROC glDeleteProgram; public void DeleteProgram(uint program) { glDeleteProgram.Invoke(program); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLDELETESHADERPROC(uint shader); private PFNGLDELETESHADERPROC glDeleteShader; public void DeleteShader(uint shader) { glDeleteShader.Invoke(shader); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLDETACHSHADERPROC(uint program, uint shader); private PFNGLDETACHSHADERPROC glDetachShader; public void DetachShader(uint program, uint shader) { glDetachShader.Invoke(program, shader); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLDISABLEVERTEXATTRIBARRAYPROC(uint index); private PFNGLDISABLEVERTEXATTRIBARRAYPROC glDisableVertexAttribArray; public void DisableVertexAttribArray(uint index) { glDisableVertexAttribArray.Invoke(index); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLENABLEVERTEXATTRIBARRAYPROC(uint index); private PFNGLENABLEVERTEXATTRIBARRAYPROC glEnableVertexAttribArray; public void EnableVertexAttribArray(uint index) { glEnableVertexAttribArray.Invoke(index); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETACTIVEATTRIBPROC(uint program, uint index, int bufSize, out int length, out int size, out AttributeType type, out sbyte name); private PFNGLGETACTIVEATTRIBPROC glGetActiveAttrib; public void GetActiveAttrib(uint program, uint index, int bufSize, out int length, out int size, out AttributeType type, out sbyte name) { glGetActiveAttrib.Invoke(program, index, bufSize, out length, out size, out type, out name); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETACTIVEUNIFORMPROC(uint program, uint index, int bufSize, out int length, out int size, out AttributeType type, out sbyte name); private PFNGLGETACTIVEUNIFORMPROC glGetActiveUniform; public void GetActiveUniform(uint program, uint index, int bufSize, out int length, out int size, out AttributeType type, out sbyte name) { glGetActiveUniform.Invoke(program, index, bufSize, out length, out size, out type, out name); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETATTACHEDSHADERSPROC(uint program, int maxCount, out int count, out uint shaders); private PFNGLGETATTACHEDSHADERSPROC glGetAttachedShaders; public void GetAttachedShaders(uint program, int maxCount, out int count, out uint shaders) { glGetAttachedShaders.Invoke(program, maxCount, out count, out shaders); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate int PFNGLGETATTRIBLOCATIONPROC(uint program, string name); private PFNGLGETATTRIBLOCATIONPROC glGetAttribLocation; public int GetAttribLocation(uint program, string name) { int loc = glGetAttribLocation.Invoke(program, name); DetectGLError(); return loc; } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETPROGRAMIVPROC(uint program, ProgramPropertyARB pname, out int parameters); private PFNGLGETPROGRAMIVPROC glGetProgramiv; public void GetProgramiv(uint program, ProgramPropertyARB pname, out int parameters) { glGetProgramiv.Invoke(program, pname, out parameters); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETPROGRAMINFOLOGPROC(uint program, int bufSize, out int length, byte[] infoLog); private PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog; public void GetProgramInfoLog(uint program, int bufSize, out int length, byte[] infoLog) { glGetProgramInfoLog.Invoke(program, bufSize, out length, infoLog); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETSHADERIVPROC(uint shader, ShaderParameterName pname, out int parameters); private PFNGLGETSHADERIVPROC glGetShaderiv; public void GetShaderiv(uint shader, ShaderParameterName pname, out int parameters) { glGetShaderiv.Invoke(shader, pname, out parameters); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETSHADERINFOLOGPROC(uint shader, int bufSize, out int length, byte[] infoLog); private PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog; public void GetShaderInfoLog(uint shader, int bufSize, out int length, byte[] infoLog) { glGetShaderInfoLog.Invoke(shader, bufSize, out length, infoLog); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETSHADERSOURCEPROC(uint shader, int bufSize, out int length, out sbyte source); private PFNGLGETSHADERSOURCEPROC glGetShaderSource; public void GetShaderSource(uint shader, int bufSize, out int length, out sbyte source) { glGetShaderSource.Invoke(shader, bufSize, out length, out source); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate int PFNGLGETUNIFORMLOCATIONPROC(uint program, string name); private PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation; public int GetUniformLocation(uint program, string name) { int loc = glGetUniformLocation.Invoke(program, name); DetectGLError(); return loc; } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETUNIFORMFVPROC(uint program, int location, out float parameters); private PFNGLGETUNIFORMFVPROC glGetUniformfv; public void GetUniformfv(uint program, int location, out float parameters) { glGetUniformfv.Invoke(program, location, out parameters); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETUNIFORMIVPROC(uint program, int location, out int parameters); private PFNGLGETUNIFORMIVPROC glGetUniformiv; public void GetUniformiv(uint program, int location, out int parameters) { glGetUniformiv.Invoke(program, location, out parameters); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETVERTEXATTRIBDVPROC(uint index, int pname, out double parameters); private PFNGLGETVERTEXATTRIBDVPROC glGetVertexAttribdv; public void GetVertexAttribdv(uint index, int pname, out double parameters) { glGetVertexAttribdv.Invoke(index, pname, out parameters); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETVERTEXATTRIBFVPROC(uint index, int pname, out float parameters); private PFNGLGETVERTEXATTRIBFVPROC glGetVertexAttribfv; public void GetVertexAttribfv(uint index, int pname, out float parameters) { glGetVertexAttribfv.Invoke(index, pname, out parameters); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETVERTEXATTRIBIVPROC(uint index, int pname, out int parameters); private PFNGLGETVERTEXATTRIBIVPROC glGetVertexAttribiv; public void GetVertexAttribiv(uint index, int pname, out int parameters) { glGetVertexAttribiv.Invoke(index, pname, out parameters); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETVERTEXATTRIBPOINTERVPROC(uint index, int pname, out IntPtr pointer); private PFNGLGETVERTEXATTRIBPOINTERVPROC glGetVertexAttribPointerv; public void GetVertexAttribPointerv(uint index, int pname, out IntPtr pointer) { glGetVertexAttribPointerv.Invoke(index, pname, out pointer); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate bool PFNGLISPROGRAMPROC(uint program); private PFNGLISPROGRAMPROC glIsProgram; public bool IsProgram(uint program) { return glIsProgram.Invoke(program); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate bool PFNGLISSHADERPROC(uint shader); private PFNGLISSHADERPROC glIsShader; public bool IsShader(uint shader) { return glIsShader.Invoke(shader); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLLINKPROGRAMPROC(uint program); private PFNGLLINKPROGRAMPROC glLinkProgram; public void LinkProgram(uint program) { glLinkProgram.Invoke(program); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLSHADERSOURCEPROC(uint shader, int count, string[] str, int[] length); private PFNGLSHADERSOURCEPROC glShaderSource; public void ShaderSource(uint shader, int count, string[] str, int[] length) { glShaderSource.Invoke(shader, count, str, length); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLUSEPROGRAMPROC(uint program); private PFNGLUSEPROGRAMPROC glUseProgram; public void UseProgram(uint program) { glUseProgram.Invoke(program); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLUNIFORM1FPROC(int location, float v0); private PFNGLUNIFORM1FPROC glUniform1f; public void Uniform1f(int location, float v0) { glUniform1f.Invoke(location, v0); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLUNIFORM2FPROC(int location, float v0, float v1); private PFNGLUNIFORM2FPROC glUniform2f; public void Uniform2f(int location, float v0, float v1) { glUniform2f.Invoke(location, v0, v1); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLUNIFORM3FPROC(int location, float v0, float v1, float v2); private PFNGLUNIFORM3FPROC glUniform3f; public void Uniform3f(int location, float v0, float v1, float v2) { glUniform3f.Invoke(location, v0, v1, v2); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLUNIFORM4FPROC(int location, float v0, float v1, float v2, float v3); private PFNGLUNIFORM4FPROC glUniform4f; public void Uniform4f(int location, float v0, float v1, float v2, float v3) { glUniform4f.Invoke(location, v0, v1, v2, v3); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLUNIFORM1IPROC(int location, int v0); private PFNGLUNIFORM1IPROC glUniform1i; public void Uniform1i(int location, int v0) { glUniform1i.Invoke(location, v0); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLUNIFORM2IPROC(int location, int v0, int v1); private PFNGLUNIFORM2IPROC glUniform2i; public void Uniform2i(int location, int v0, int v1) { glUniform2i.Invoke(location, v0, v1); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLUNIFORM3IPROC(int location, int v0, int v1, int v2); private PFNGLUNIFORM3IPROC glUniform3i; public void Uniform3i(int location, int v0, int v1, int v2) { glUniform3i.Invoke(location, v0, v1, v2); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLUNIFORM4IPROC(int location, int v0, int v1, int v2, int v3); private PFNGLUNIFORM4IPROC glUniform4i; public void Uniform4i(int location, int v0, int v1, int v2, int v3) { glUniform4i.Invoke(location, v0, v1, v2, v3); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLUNIFORM1FVPROC(int location, int count, float[] value); private PFNGLUNIFORM1FVPROC glUniform1fv; public void Uniform1fv(int location, int count, float[] value) { glUniform1fv.Invoke(location, count, value); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLUNIFORM2FVPROC(int location, int count, float[] value); private PFNGLUNIFORM2FVPROC glUniform2fv; public void Uniform2fv(int location, int count, float[] value) { glUniform2fv.Invoke(location, count, value); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLUNIFORM3FVPROC(int location, int count, float[] value); private PFNGLUNIFORM3FVPROC glUniform3fv; public void Uniform3fv(int location, int count, float[] value) { glUniform3fv.Invoke(location, count, value); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLUNIFORM4FVPROC(int location, int count, float[] value); private PFNGLUNIFORM4FVPROC glUniform4fv; public void Uniform4fv(int location, int count, float[] value) { glUniform4fv.Invoke(location, count, value); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLUNIFORM1IVPROC(int location, int count, int[] value); private PFNGLUNIFORM1IVPROC glUniform1iv; public void Uniform1iv(int location, int count, int[] value) { glUniform1iv.Invoke(location, count, value); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLUNIFORM2IVPROC(int location, int count, int[] value); private PFNGLUNIFORM2IVPROC glUniform2iv; public void Uniform2iv(int location, int count, int[] value) { glUniform2iv.Invoke(location, count, value); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLUNIFORM3IVPROC(int location, int count, int[] value); private PFNGLUNIFORM3IVPROC glUniform3iv; public void Uniform3iv(int location, int count, int[] value) { glUniform3iv.Invoke(location, count, value); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLUNIFORM4IVPROC(int location, int count, int[] value); private PFNGLUNIFORM4IVPROC glUniform4iv; public void Uniform4iv(int location, int count, int[] value) { glUniform4iv.Invoke(location, count, value); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLUNIFORMMATRIX2FVPROC(int location, int count, bool transpose, float[] value); private PFNGLUNIFORMMATRIX2FVPROC glUniformMatrix2fv; public void UniformMatrix2fv(int location, int count, bool transpose, float[] value) { glUniformMatrix2fv.Invoke(location, count, transpose, value); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLUNIFORMMATRIX3FVPROC(int location, int count, bool transpose, float[] value); private PFNGLUNIFORMMATRIX3FVPROC glUniformMatrix3fv; public void UniformMatrix3fv(int location, int count, bool transpose, float[] value) { glUniformMatrix3fv.Invoke(location, count, transpose, value); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLUNIFORMMATRIX4FVPROC(int location, int count, bool transpose, float[] value); private PFNGLUNIFORMMATRIX4FVPROC glUniformMatrix4fv; public void UniformMatrix4fv(int location, int count, bool transpose, float[] value) { glUniformMatrix4fv.Invoke(location, count, transpose, value); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVALIDATEPROGRAMPROC(uint program); private PFNGLVALIDATEPROGRAMPROC glValidateProgram; public void ValidateProgram(uint program) { glValidateProgram.Invoke(program); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIB1DPROC(uint index, double x); private PFNGLVERTEXATTRIB1DPROC glVertexAttrib1d; public void VertexAttrib1d(uint index, double x) { glVertexAttrib1d.Invoke(index, x); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIB1DVPROC(uint index, double[] v); private PFNGLVERTEXATTRIB1DVPROC glVertexAttrib1dv; public void VertexAttrib1dv(uint index, double[] v) { glVertexAttrib1dv.Invoke(index, v); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIB1FPROC(uint index, float x); private PFNGLVERTEXATTRIB1FPROC glVertexAttrib1f; public void VertexAttrib1f(uint index, float x) { glVertexAttrib1f.Invoke(index, x); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIB1FVPROC(uint index, float[] v); private PFNGLVERTEXATTRIB1FVPROC glVertexAttrib1fv; public void VertexAttrib1fv(uint index, float[] v) { glVertexAttrib1fv.Invoke(index, v); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIB1SPROC(uint index, short x); private PFNGLVERTEXATTRIB1SPROC glVertexAttrib1s; public void VertexAttrib1s(uint index, short x) { glVertexAttrib1s.Invoke(index, x); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIB1SVPROC(uint index, short[] v); private PFNGLVERTEXATTRIB1SVPROC glVertexAttrib1sv; public void VertexAttrib1sv(uint index, short[] v) { glVertexAttrib1sv.Invoke(index, v); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIB2DPROC(uint index, double x, double y); private PFNGLVERTEXATTRIB2DPROC glVertexAttrib2d; public void VertexAttrib2d(uint index, double x, double y) { glVertexAttrib2d.Invoke(index, x, y); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIB2DVPROC(uint index, double[] v); private PFNGLVERTEXATTRIB2DVPROC glVertexAttrib2dv; public void VertexAttrib2dv(uint index, double[] v) { glVertexAttrib2dv.Invoke(index, v); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIB2FPROC(uint index, float x, float y); private PFNGLVERTEXATTRIB2FPROC glVertexAttrib2f; public void VertexAttrib2f(uint index, float x, float y) { glVertexAttrib2f.Invoke(index, x, y); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIB2FVPROC(uint index, float[] v); private PFNGLVERTEXATTRIB2FVPROC glVertexAttrib2fv; public void VertexAttrib2fv(uint index, float[] v) { glVertexAttrib2fv.Invoke(index, v); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIB2SPROC(uint index, short x, short y); private PFNGLVERTEXATTRIB2SPROC glVertexAttrib2s; public void VertexAttrib2s(uint index, short x, short y) { glVertexAttrib2s.Invoke(index, x, y); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIB2SVPROC(uint index, short[] v); private PFNGLVERTEXATTRIB2SVPROC glVertexAttrib2sv; public void VertexAttrib2sv(uint index, short[] v) { glVertexAttrib2sv.Invoke(index, v); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIB3DPROC(uint index, double x, double y, double z); private PFNGLVERTEXATTRIB3DPROC glVertexAttrib3d; public void VertexAttrib3d(uint index, double x, double y, double z) { glVertexAttrib3d.Invoke(index, x, y, z); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIB3DVPROC(uint index, double[] v); private PFNGLVERTEXATTRIB3DVPROC glVertexAttrib3dv; public void VertexAttrib3dv(uint index, double[] v) { glVertexAttrib3dv.Invoke(index, v); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIB3FPROC(uint index, float x, float y, float z); private PFNGLVERTEXATTRIB3FPROC glVertexAttrib3f; public void VertexAttrib3f(uint index, float x, float y, float z) { glVertexAttrib3f.Invoke(index, x, y, z); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIB3FVPROC(uint index, float[] v); private PFNGLVERTEXATTRIB3FVPROC glVertexAttrib3fv; public void VertexAttrib3fv(uint index, float[] v) { glVertexAttrib3fv.Invoke(index, v); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIB3SPROC(uint index, short x, short y, short z); private PFNGLVERTEXATTRIB3SPROC glVertexAttrib3s; public void VertexAttrib3s(uint index, short x, short y, short z) { glVertexAttrib3s.Invoke(index, x, y, z); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIB3SVPROC(uint index, short[] v); private PFNGLVERTEXATTRIB3SVPROC glVertexAttrib3sv; public void VertexAttrib3sv(uint index, short[] v) { glVertexAttrib3sv.Invoke(index, v); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIB4NBVPROC(uint index, sbyte[] v); private PFNGLVERTEXATTRIB4NBVPROC glVertexAttrib4Nbv; public void VertexAttrib4Nbv(uint index, sbyte[] v) { glVertexAttrib4Nbv.Invoke(index, v); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIB4NIVPROC(uint index, int[] v); private PFNGLVERTEXATTRIB4NIVPROC glVertexAttrib4Niv; public void VertexAttrib4Niv(uint index, int[] v) { glVertexAttrib4Niv.Invoke(index, v); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIB4NSVPROC(uint index, short[] v); private PFNGLVERTEXATTRIB4NSVPROC glVertexAttrib4Nsv; public void VertexAttrib4Nsv(uint index, short[] v) { glVertexAttrib4Nsv.Invoke(index, v); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIB4NUBPROC(uint index, byte x, byte y, byte z, byte w); private PFNGLVERTEXATTRIB4NUBPROC glVertexAttrib4Nub; public void VertexAttrib4Nub(uint index, byte x, byte y, byte z, byte w) { glVertexAttrib4Nub.Invoke(index, x, y, z, w); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIB4NUBVPROC(uint index, byte[] v); private PFNGLVERTEXATTRIB4NUBVPROC glVertexAttrib4Nubv; public void VertexAttrib4Nubv(uint index, byte[] v) { glVertexAttrib4Nubv.Invoke(index, v); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIB4NUIVPROC(uint index, uint[] v); private PFNGLVERTEXATTRIB4NUIVPROC glVertexAttrib4Nuiv; public void VertexAttrib4Nuiv(uint index, uint[] v) { glVertexAttrib4Nuiv.Invoke(index, v); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIB4NUSVPROC(uint index, ushort[] v); private PFNGLVERTEXATTRIB4NUSVPROC glVertexAttrib4Nusv; public void VertexAttrib4Nusv(uint index, ushort[] v) { glVertexAttrib4Nusv.Invoke(index, v); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIB4BVPROC(uint index, sbyte[] v); private PFNGLVERTEXATTRIB4BVPROC glVertexAttrib4bv; public void VertexAttrib4bv(uint index, sbyte[] v) { glVertexAttrib4bv.Invoke(index, v); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIB4DPROC(uint index, double x, double y, double z, double w); private PFNGLVERTEXATTRIB4DPROC glVertexAttrib4d; public void VertexAttrib4d(uint index, double x, double y, double z, double w) { glVertexAttrib4d.Invoke(index, x, y, z, w); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIB4DVPROC(uint index, double[] v); private PFNGLVERTEXATTRIB4DVPROC glVertexAttrib4dv; public void VertexAttrib4dv(uint index, double[] v) { glVertexAttrib4dv.Invoke(index, v); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIB4FPROC(uint index, float x, float y, float z, float w); private PFNGLVERTEXATTRIB4FPROC glVertexAttrib4f; public void VertexAttrib4f(uint index, float x, float y, float z, float w) { glVertexAttrib4f.Invoke(index, x, y, z, w); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIB4FVPROC(uint index, float[] v); private PFNGLVERTEXATTRIB4FVPROC glVertexAttrib4fv; public void VertexAttrib4fv(uint index, float[] v) { glVertexAttrib4fv.Invoke(index, v); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIB4IVPROC(uint index, int[] v); private PFNGLVERTEXATTRIB4IVPROC glVertexAttrib4iv; public void VertexAttrib4iv(uint index, int[] v) { glVertexAttrib4iv.Invoke(index, v); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIB4SPROC(uint index, short x, short y, short z, short w); private PFNGLVERTEXATTRIB4SPROC glVertexAttrib4s; public void VertexAttrib4s(uint index, short x, short y, short z, short w) { glVertexAttrib4s.Invoke(index, x, y, z, w); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIB4SVPROC(uint index, short[] v); private PFNGLVERTEXATTRIB4SVPROC glVertexAttrib4sv; public void VertexAttrib4sv(uint index, short[] v) { glVertexAttrib4sv.Invoke(index, v); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIB4UBVPROC(uint index, byte[] v); private PFNGLVERTEXATTRIB4UBVPROC glVertexAttrib4ubv; public void VertexAttrib4ubv(uint index, byte[] v) { glVertexAttrib4ubv.Invoke(index, v); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIB4UIVPROC(uint index, uint[] v); private PFNGLVERTEXATTRIB4UIVPROC glVertexAttrib4uiv; public void VertexAttrib4uiv(uint index, uint[] v) { glVertexAttrib4uiv.Invoke(index, v); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIB4USVPROC(uint index, ushort[] v); private PFNGLVERTEXATTRIB4USVPROC glVertexAttrib4usv; public void VertexAttrib4usv(uint index, ushort[] v) { glVertexAttrib4usv.Invoke(index, v); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIBPOINTERPROC(uint index, int size, VertexAttribPointerType type, bool normalized, uint stride, IntPtr pointer); private PFNGLVERTEXATTRIBPOINTERPROC glVertexAttribPointer; public void VertexAttribPointer(uint index, int size, VertexAttribPointerType type, bool normalized, uint stride, IntPtr pointer) { glVertexAttribPointer.Invoke(index, size, type, normalized, stride, pointer); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLUNIFORMMATRIX2X3FVPROC(int location, int count, bool transpose, float[] value); private PFNGLUNIFORMMATRIX2X3FVPROC glUniformMatrix2x3fv; public void UniformMatrix2x3fv(int location, int count, bool transpose, float[] value) { glUniformMatrix2x3fv.Invoke(location, count, transpose, value); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLUNIFORMMATRIX3X2FVPROC(int location, int count, bool transpose, float[] value); private PFNGLUNIFORMMATRIX3X2FVPROC glUniformMatrix3x2fv; public void UniformMatrix3x2fv(int location, int count, bool transpose, float[] value) { glUniformMatrix3x2fv.Invoke(location, count, transpose, value); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLUNIFORMMATRIX2X4FVPROC(int location, int count, bool transpose, float[] value); private PFNGLUNIFORMMATRIX2X4FVPROC glUniformMatrix2x4fv; public void UniformMatrix2x4fv(int location, int count, bool transpose, float[] value) { glUniformMatrix2x4fv.Invoke(location, count, transpose, value); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLUNIFORMMATRIX4X2FVPROC(int location, int count, bool transpose, float[] value); private PFNGLUNIFORMMATRIX4X2FVPROC glUniformMatrix4x2fv; public void UniformMatrix4x2fv(int location, int count, bool transpose, float[] value) { glUniformMatrix4x2fv.Invoke(location, count, transpose, value); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLUNIFORMMATRIX3X4FVPROC(int location, int count, bool transpose, float[] value); private PFNGLUNIFORMMATRIX3X4FVPROC glUniformMatrix3x4fv; public void UniformMatrix3x4fv(int location, int count, bool transpose, float[] value) { glUniformMatrix3x4fv.Invoke(location, count, transpose, value); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLUNIFORMMATRIX4X3FVPROC(int location, int count, bool transpose, float[] value); private PFNGLUNIFORMMATRIX4X3FVPROC glUniformMatrix4x3fv; public void UniformMatrix4x3fv(int location, int count, bool transpose, float[] value) { glUniformMatrix4x3fv.Invoke(location, count, transpose, value); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLCOLORMASKIPROC(uint index, bool r, bool g, bool b, bool a); private PFNGLCOLORMASKIPROC glColorMaski; public void ColorMaski(uint index, bool r, bool g, bool b, bool a) { glColorMaski.Invoke(index, r, g, b, a); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETBOOLEANI_VPROC(BufferTargetARB target, uint index, out bool data); private PFNGLGETBOOLEANI_VPROC glGetBooleani_v; public void GetBooleani_v(BufferTargetARB target, uint index, out bool data) { glGetBooleani_v.Invoke(target, index, out data); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETINTEGERI_VPROC(TypeEnum target, uint index, out int data); private PFNGLGETINTEGERI_VPROC glGetIntegeri_v; public void GetIntegeri_v(TypeEnum target, uint index, out int data) { glGetIntegeri_v.Invoke(target, index, out data); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLENABLEIPROC(EnableCap target, uint index); private PFNGLENABLEIPROC glEnablei; public void Enablei(EnableCap target, uint index) { glEnablei.Invoke(target, index); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLDISABLEIPROC(EnableCap target, uint index); private PFNGLDISABLEIPROC glDisablei; public void Disablei(EnableCap target, uint index) { glDisablei.Invoke(target, index); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate bool PFNGLISENABLEDIPROC(EnableCap target, uint index); private PFNGLISENABLEDIPROC glIsEnabledi; public bool IsEnabledi(EnableCap target, uint index) { return glIsEnabledi.Invoke(target, index); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLBEGINTRANSFORMFEEDBACKPROC(PrimitiveType primitiveMode); private PFNGLBEGINTRANSFORMFEEDBACKPROC glBeginTransformFeedback; public void BeginTransformFeedback(PrimitiveType primitiveMode) { glBeginTransformFeedback.Invoke(primitiveMode); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLENDTRANSFORMFEEDBACKPROC(); private PFNGLENDTRANSFORMFEEDBACKPROC glEndTransformFeedback; public void EndTransformFeedback() { glEndTransformFeedback.Invoke(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLBINDBUFFERRANGEPROC(BufferTargetARB target, uint index, uint buffer, IntPtr offset, IntPtr size); private PFNGLBINDBUFFERRANGEPROC glBindBufferRange; public void BindBufferRange(BufferTargetARB target, uint index, uint buffer, IntPtr offset, IntPtr size) { glBindBufferRange.Invoke(target, index, buffer, offset, size); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLBINDBUFFERBASEPROC(BufferTargetARB target, uint index, uint buffer); private PFNGLBINDBUFFERBASEPROC glBindBufferBase; public void BindBufferBase(BufferTargetARB target, uint index, uint buffer) { glBindBufferBase.Invoke(target, index, buffer); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLTRANSFORMFEEDBACKVARYINGSPROC(uint program, int count, sbyte varyings, int bufferMode); private PFNGLTRANSFORMFEEDBACKVARYINGSPROC glTransformFeedbackVaryings; public void TransformFeedbackVaryings(uint program, int count, sbyte varyings, int bufferMode) { glTransformFeedbackVaryings.Invoke(program, count, varyings, bufferMode); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETTRANSFORMFEEDBACKVARYINGPROC(uint program, uint index, int bufSize, out int length, out int size, out int type, out sbyte name); private PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glGetTransformFeedbackVarying; public void GetTransformFeedbackVarying(uint program, uint index, int bufSize, out int length, out int size, out int type, out sbyte name) { glGetTransformFeedbackVarying.Invoke(program, index, bufSize, out length, out size, out type, out name); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLCLAMPCOLORPROC(int target, int clamp); private PFNGLCLAMPCOLORPROC glClampColor; public void ClampColor(int target, int clamp) { glClampColor.Invoke(target, clamp); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLBEGINCONDITIONALRENDERPROC(uint id, TypeEnum mode); private PFNGLBEGINCONDITIONALRENDERPROC glBeginConditionalRender; public void BeginConditionalRender(uint id, TypeEnum mode) { glBeginConditionalRender.Invoke(id, mode); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLENDCONDITIONALRENDERPROC(); private PFNGLENDCONDITIONALRENDERPROC glEndConditionalRender; public void EndConditionalRender() { glEndConditionalRender.Invoke(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIBIPOINTERPROC(uint index, int size, VertexAttribPointerType type, int stride, IntPtr pointer); private PFNGLVERTEXATTRIBIPOINTERPROC glVertexAttribIPointer; public void VertexAttribIPointer(uint index, int size, VertexAttribPointerType type, int stride, IntPtr pointer) { glVertexAttribIPointer.Invoke(index, size, type, stride, pointer); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETVERTEXATTRIBIIVPROC(uint index, VertexAttribEnum pname, out int parameters); private PFNGLGETVERTEXATTRIBIIVPROC glGetVertexAttribIiv; public void GetVertexAttribIiv(uint index, VertexAttribEnum pname, out int parameters) { glGetVertexAttribIiv.Invoke(index, pname, out parameters); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETVERTEXATTRIBIUIVPROC(uint index, VertexAttribEnum pname, out uint parameters); private PFNGLGETVERTEXATTRIBIUIVPROC glGetVertexAttribIuiv; public void GetVertexAttribIuiv(uint index, VertexAttribEnum pname, out uint parameters) { glGetVertexAttribIuiv.Invoke(index, pname, out parameters); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIBI1IPROC(uint index, int x); private PFNGLVERTEXATTRIBI1IPROC glVertexAttribI1i; public void VertexAttribI1i(uint index, int x) { glVertexAttribI1i.Invoke(index, x); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIBI2IPROC(uint index, int x, int y); private PFNGLVERTEXATTRIBI2IPROC glVertexAttribI2i; public void VertexAttribI2i(uint index, int x, int y) { glVertexAttribI2i.Invoke(index, x, y); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIBI3IPROC(uint index, int x, int y, int z); private PFNGLVERTEXATTRIBI3IPROC glVertexAttribI3i; public void VertexAttribI3i(uint index, int x, int y, int z) { glVertexAttribI3i.Invoke(index, x, y, z); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIBI4IPROC(uint index, int x, int y, int z, int w); private PFNGLVERTEXATTRIBI4IPROC glVertexAttribI4i; public void VertexAttribI4i(uint index, int x, int y, int z, int w) { glVertexAttribI4i.Invoke(index, x, y, z, w); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIBI1UIPROC(uint index, uint x); private PFNGLVERTEXATTRIBI1UIPROC glVertexAttribI1ui; public void VertexAttribI1ui(uint index, uint x) { glVertexAttribI1ui.Invoke(index, x); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIBI2UIPROC(uint index, uint x, uint y); private PFNGLVERTEXATTRIBI2UIPROC glVertexAttribI2ui; public void VertexAttribI2ui(uint index, uint x, uint y) { glVertexAttribI2ui.Invoke(index, x, y); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIBI3UIPROC(uint index, uint x, uint y, uint z); private PFNGLVERTEXATTRIBI3UIPROC glVertexAttribI3ui; public void VertexAttribI3ui(uint index, uint x, uint y, uint z) { glVertexAttribI3ui.Invoke(index, x, y, z); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIBI4UIPROC(uint index, uint x, uint y, uint z, uint w); private PFNGLVERTEXATTRIBI4UIPROC glVertexAttribI4ui; public void VertexAttribI4ui(uint index, uint x, uint y, uint z, uint w) { glVertexAttribI4ui.Invoke(index, x, y, z, w); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIBI1IVPROC(uint index, int[] v); private PFNGLVERTEXATTRIBI1IVPROC glVertexAttribI1iv; public void VertexAttribI1iv(uint index, int[] v) { glVertexAttribI1iv.Invoke(index, v); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIBI2IVPROC(uint index, int[] v); private PFNGLVERTEXATTRIBI2IVPROC glVertexAttribI2iv; public void VertexAttribI2iv(uint index, int[] v) { glVertexAttribI2iv.Invoke(index, v); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIBI3IVPROC(uint index, int[] v); private PFNGLVERTEXATTRIBI3IVPROC glVertexAttribI3iv; public void VertexAttribI3iv(uint index, int[] v) { glVertexAttribI3iv.Invoke(index, v); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIBI4IVPROC(uint index, int[] v); private PFNGLVERTEXATTRIBI4IVPROC glVertexAttribI4iv; public void VertexAttribI4iv(uint index, int[] v) { glVertexAttribI4iv.Invoke(index, v); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIBI1UIVPROC(uint index, uint[] v); private PFNGLVERTEXATTRIBI1UIVPROC glVertexAttribI1uiv; public void VertexAttribI1uiv(uint index, uint[] v) { glVertexAttribI1uiv.Invoke(index, v); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIBI2UIVPROC(uint index, uint[] v); private PFNGLVERTEXATTRIBI2UIVPROC glVertexAttribI2uiv; public void VertexAttribI2uiv(uint index, uint[] v) { glVertexAttribI2uiv.Invoke(index, v); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIBI3UIVPROC(uint index, uint[] v); private PFNGLVERTEXATTRIBI3UIVPROC glVertexAttribI3uiv; public void VertexAttribI3uiv(uint index, uint[] v) { glVertexAttribI3uiv.Invoke(index, v); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIBI4UIVPROC(uint index, uint[] v); private PFNGLVERTEXATTRIBI4UIVPROC glVertexAttribI4uiv; public void VertexAttribI4uiv(uint index, uint[] v) { glVertexAttribI4uiv.Invoke(index, v); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIBI4BVPROC(uint index, sbyte[] v); private PFNGLVERTEXATTRIBI4BVPROC glVertexAttribI4bv; public void VertexAttribI4bv(uint index, sbyte[] v) { glVertexAttribI4bv.Invoke(index, v); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIBI4SVPROC(uint index, short[] v); private PFNGLVERTEXATTRIBI4SVPROC glVertexAttribI4sv; public void VertexAttribI4sv(uint index, short[] v) { glVertexAttribI4sv.Invoke(index, v); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIBI4UBVPROC(uint index, byte[] v); private PFNGLVERTEXATTRIBI4UBVPROC glVertexAttribI4ubv; public void VertexAttribI4ubv(uint index, byte[] v) { glVertexAttribI4ubv.Invoke(index, v); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLVERTEXATTRIBI4USVPROC(uint index, ushort[] v); private PFNGLVERTEXATTRIBI4USVPROC glVertexAttribI4usv; public void VertexAttribI4usv(uint index, ushort[] v) { glVertexAttribI4usv.Invoke(index, v); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETUNIFORMUIVPROC(uint program, int location, out uint parameters); private PFNGLGETUNIFORMUIVPROC glGetUniformuiv; public void GetUniformuiv(uint program, int location, out uint parameters) { glGetUniformuiv.Invoke(program, location, out parameters); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLBINDFRAGDATALOCATIONPROC(uint program, uint color, sbyte[] name); private PFNGLBINDFRAGDATALOCATIONPROC glBindFragDataLocation; public void BindFragDataLocation(uint program, uint color, sbyte[] name) { glBindFragDataLocation.Invoke(program, color, name); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate int PFNGLGETFRAGDATALOCATIONPROC(uint program, sbyte[] name); private PFNGLGETFRAGDATALOCATIONPROC glGetFragDataLocation; public int GetFragDataLocation(uint program, sbyte[] name) { return glGetFragDataLocation.Invoke(program, name); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLUNIFORM1UIPROC(int location, uint v0); private PFNGLUNIFORM1UIPROC glUniform1ui; public void Uniform1ui(int location, uint v0) { glUniform1ui.Invoke(location, v0); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLUNIFORM2UIPROC(int location, uint v0, uint v1); private PFNGLUNIFORM2UIPROC glUniform2ui; public void Uniform2ui(int location, uint v0, uint v1) { glUniform2ui.Invoke(location, v0, v1); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLUNIFORM3UIPROC(int location, uint v0, uint v1, uint v2); private PFNGLUNIFORM3UIPROC glUniform3ui; public void Uniform3ui(int location, uint v0, uint v1, uint v2) { glUniform3ui.Invoke(location, v0, v1, v2); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLUNIFORM4UIPROC(int location, uint v0, uint v1, uint v2, uint v3); private PFNGLUNIFORM4UIPROC glUniform4ui; public void Uniform4ui(int location, uint v0, uint v1, uint v2, uint v3) { glUniform4ui.Invoke(location, v0, v1, v2, v3); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLUNIFORM1UIVPROC(int location, int count, uint[] value); private PFNGLUNIFORM1UIVPROC glUniform1uiv; public void Uniform1uiv(int location, int count, uint[] value) { glUniform1uiv.Invoke(location, count, value); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLUNIFORM2UIVPROC(int location, int count, uint[] value); private PFNGLUNIFORM2UIVPROC glUniform2uiv; public void Uniform2uiv(int location, int count, uint[] value) { glUniform2uiv.Invoke(location, count, value); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLUNIFORM3UIVPROC(int location, int count, uint[] value); private PFNGLUNIFORM3UIVPROC glUniform3uiv; public void Uniform3uiv(int location, int count, uint[] value) { glUniform3uiv.Invoke(location, count, value); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLUNIFORM4UIVPROC(int location, int count, uint[] value); private PFNGLUNIFORM4UIVPROC glUniform4uiv; public void Uniform4uiv(int location, int count, uint[] value) { glUniform4uiv.Invoke(location, count, value); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLTEXPARAMETERIIVPROC(TextureTarget target, TextureParameterName pname, int[] parameters); private PFNGLTEXPARAMETERIIVPROC glTexParameterIiv; public void TexParameterIiv(TextureTarget target, TextureParameterName pname, int[] parameters) { glTexParameterIiv.Invoke(target, pname, parameters); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLTEXPARAMETERIUIVPROC(TextureTarget target, TextureParameterName pname, uint[] parameters); private PFNGLTEXPARAMETERIUIVPROC glTexParameterIuiv; public void TexParameterIuiv(TextureTarget target, TextureParameterName pname, uint[] parameters) { glTexParameterIuiv.Invoke(target, pname, parameters); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETTEXPARAMETERIIVPROC(TextureTarget target, GetTextureParameter pname, out int parameters); private PFNGLGETTEXPARAMETERIIVPROC glGetTexParameterIiv; public void GetTexParameterIiv(TextureTarget target, GetTextureParameter pname, out int parameters) { glGetTexParameterIiv.Invoke(target, pname, out parameters); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETTEXPARAMETERIUIVPROC(TextureTarget target, GetTextureParameter pname, out uint parameters); private PFNGLGETTEXPARAMETERIUIVPROC glGetTexParameterIuiv; public void GetTexParameterIuiv(TextureTarget target, GetTextureParameter pname, out uint parameters) { glGetTexParameterIuiv.Invoke(target, pname, out parameters); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLCLEARBUFFERIVPROC(Buffer buffer, int drawbuffer, int[] value); private PFNGLCLEARBUFFERIVPROC glClearBufferiv; public void ClearBufferiv(Buffer buffer, int drawbuffer, int[] value) { glClearBufferiv.Invoke(buffer, drawbuffer, value); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLCLEARBUFFERUIVPROC(Buffer buffer, int drawbuffer, uint[] value); private PFNGLCLEARBUFFERUIVPROC glClearBufferuiv; public void ClearBufferuiv(Buffer buffer, int drawbuffer, uint[] value) { glClearBufferuiv.Invoke(buffer, drawbuffer, value); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLCLEARBUFFERFVPROC(Buffer buffer, int drawbuffer, float[] value); private PFNGLCLEARBUFFERFVPROC glClearBufferfv; public void ClearBufferfv(Buffer buffer, int drawbuffer, float[] value) { glClearBufferfv.Invoke(buffer, drawbuffer, value); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLCLEARBUFFERFIPROC(Buffer buffer, int drawbuffer, float depth, int stencil); private PFNGLCLEARBUFFERFIPROC glClearBufferfi; public void ClearBufferfi(Buffer buffer, int drawbuffer, float depth, int stencil) { glClearBufferfi.Invoke(buffer, drawbuffer, depth, stencil); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate IntPtr PFNGLGETSTRINGIPROC(StringName name, uint index); private PFNGLGETSTRINGIPROC glGetStringi; public IntPtr GetStringi(StringName name, uint index) { return glGetStringi.Invoke(name, index); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate bool PFNGLISRENDERBUFFERPROC(uint renderbuffer); private PFNGLISRENDERBUFFERPROC glIsRenderbuffer; public bool IsRenderbuffer(uint renderbuffer) { return glIsRenderbuffer.Invoke(renderbuffer); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLBINDRENDERBUFFERPROC(RenderbufferTarget target, uint renderbuffer); private PFNGLBINDRENDERBUFFERPROC glBindRenderbuffer; public void BindRenderbuffer(RenderbufferTarget target, uint renderbuffer) { glBindRenderbuffer.Invoke(target, renderbuffer); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLDELETERENDERBUFFERSPROC(int n, uint[] renderbuffers); private PFNGLDELETERENDERBUFFERSPROC glDeleteRenderbuffers; public void DeleteRenderbuffers(int n, uint[] renderbuffers) { glDeleteRenderbuffers.Invoke(n, renderbuffers); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGENRENDERBUFFERSPROC(int n, out uint renderbuffers); private PFNGLGENRENDERBUFFERSPROC glGenRenderbuffers; public void GenRenderbuffers(int n, out uint renderbuffers) { glGenRenderbuffers.Invoke(n, out renderbuffers); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLRENDERBUFFERSTORAGEPROC(RenderbufferTarget target, InternalFormat internalformat, int width, int height); private PFNGLRENDERBUFFERSTORAGEPROC glRenderbufferStorage; public void RenderbufferStorage(RenderbufferTarget target, InternalFormat internalformat, int width, int height) { glRenderbufferStorage.Invoke(target, internalformat, width, height); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETRENDERBUFFERPARAMETERIVPROC(RenderbufferTarget target, RenderbufferParameterName pname, out int parameters); private PFNGLGETRENDERBUFFERPARAMETERIVPROC glGetRenderbufferParameteriv; public void GetRenderbufferParameteriv(RenderbufferTarget target, RenderbufferParameterName pname, out int parameters) { glGetRenderbufferParameteriv.Invoke(target, pname, out parameters); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate bool PFNGLISFRAMEBUFFERPROC(uint framebuffer); private PFNGLISFRAMEBUFFERPROC glIsFramebuffer; public bool IsFramebuffer(uint framebuffer) { return glIsFramebuffer.Invoke(framebuffer); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLBINDFRAMEBUFFERPROC(FramebufferTarget target, uint framebuffer); private PFNGLBINDFRAMEBUFFERPROC glBindFramebuffer; public void BindFramebuffer(FramebufferTarget target, uint framebuffer) { glBindFramebuffer.Invoke(target, framebuffer); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLDELETEFRAMEBUFFERSPROC(int n, uint[] framebuffers); private PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers; public void DeleteFramebuffers(int n, uint[] framebuffers) { glDeleteFramebuffers.Invoke(n, framebuffers); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGENFRAMEBUFFERSPROC(int n, out uint framebuffers); private PFNGLGENFRAMEBUFFERSPROC glGenFramebuffers; public void GenFramebuffers(int n, out uint framebuffers) { glGenFramebuffers.Invoke(n, out framebuffers); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate FramebufferStatus PFNGLCHECKFRAMEBUFFERSTATUSPROC(FramebufferTarget target); private PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus; public FramebufferStatus CheckFramebufferStatus(FramebufferTarget target) { return glCheckFramebufferStatus.Invoke(target); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLFRAMEBUFFERTEXTURE1DPROC(FramebufferTarget target, FramebufferAttachment attachment, TextureTarget textarget, uint texture, int level); private PFNGLFRAMEBUFFERTEXTURE1DPROC glFramebufferTexture1D; public void FramebufferTexture1D(FramebufferTarget target, FramebufferAttachment attachment, TextureTarget textarget, uint texture, int level) { glFramebufferTexture1D.Invoke(target, attachment, textarget, texture, level); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLFRAMEBUFFERTEXTURE2DPROC(FramebufferTarget target, FramebufferAttachment attachment, TextureTarget textarget, uint texture, int level); private PFNGLFRAMEBUFFERTEXTURE2DPROC glFramebufferTexture2D; public void FramebufferTexture2D(FramebufferTarget target, FramebufferAttachment attachment, TextureTarget textarget, uint texture, int level) { glFramebufferTexture2D.Invoke(target, attachment, textarget, texture, level); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLFRAMEBUFFERTEXTURE3DPROC(FramebufferTarget target, FramebufferAttachment attachment, TextureTarget textarget, uint texture, int level, int zoffset); private PFNGLFRAMEBUFFERTEXTURE3DPROC glFramebufferTexture3D; public void FramebufferTexture3D(FramebufferTarget target, FramebufferAttachment attachment, TextureTarget textarget, uint texture, int level, int zoffset) { glFramebufferTexture3D.Invoke(target, attachment, textarget, texture, level, zoffset); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLFRAMEBUFFERRENDERBUFFERPROC(FramebufferTarget target, FramebufferAttachment attachment, RenderbufferTarget renderbuffertarget, uint renderbuffer); private PFNGLFRAMEBUFFERRENDERBUFFERPROC glFramebufferRenderbuffer; public void FramebufferRenderbuffer(FramebufferTarget target, FramebufferAttachment attachment, RenderbufferTarget renderbuffertarget, uint renderbuffer) { glFramebufferRenderbuffer.Invoke(target, attachment, renderbuffertarget, renderbuffer); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC(FramebufferTarget target, FramebufferAttachment attachment, FramebufferAttachmentParameterName pname, out int parameters); private PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glGetFramebufferAttachmentParameteriv; public void GetFramebufferAttachmentParameteriv(FramebufferTarget target, FramebufferAttachment attachment, FramebufferAttachmentParameterName pname, out int parameters) { glGetFramebufferAttachmentParameteriv.Invoke(target, attachment, pname, out parameters); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGENERATEMIPMAPPROC(TextureTarget target); private PFNGLGENERATEMIPMAPPROC glGenerateMipmap; public void GenerateMipmap(TextureTarget target) { glGenerateMipmap.Invoke(target); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLBLITFRAMEBUFFERPROC(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, ClearBufferMask mask, BlitFramebufferFilter filter); private PFNGLBLITFRAMEBUFFERPROC glBlitFramebuffer; public void BlitFramebuffer(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, ClearBufferMask mask, BlitFramebufferFilter filter) { glBlitFramebuffer.Invoke(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC(RenderbufferTarget target, int samples, InternalFormat internalformat, int width, int height); private PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glRenderbufferStorageMultisample; public void RenderbufferStorageMultisample(RenderbufferTarget target, int samples, InternalFormat internalformat, int width, int height) { glRenderbufferStorageMultisample.Invoke(target, samples, internalformat, width, height); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLFRAMEBUFFERTEXTURELAYERPROC(FramebufferTarget target, FramebufferAttachment attachment, uint texture, int level, int layer); private PFNGLFRAMEBUFFERTEXTURELAYERPROC glFramebufferTextureLayer; public void FramebufferTextureLayer(FramebufferTarget target, FramebufferAttachment attachment, uint texture, int level, int layer) { glFramebufferTextureLayer.Invoke(target, attachment, texture, level, layer); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate IntPtr PFNGLMAPBUFFERRANGEPROC(BufferTargetARB target, IntPtr offset, IntPtr length, MapBufferAccessMask access); private PFNGLMAPBUFFERRANGEPROC glMapBufferRange; public IntPtr MapBufferRange(BufferTargetARB target, IntPtr offset, IntPtr length, MapBufferAccessMask access) { return glMapBufferRange.Invoke(target, offset, length, access); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLFLUSHMAPPEDBUFFERRANGEPROC(BufferTargetARB target, IntPtr offset, IntPtr length); private PFNGLFLUSHMAPPEDBUFFERRANGEPROC glFlushMappedBufferRange; public void FlushMappedBufferRange(BufferTargetARB target, IntPtr offset, IntPtr length) { glFlushMappedBufferRange.Invoke(target, offset, length); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLBINDVERTEXARRAYPROC(uint array); private PFNGLBINDVERTEXARRAYPROC glBindVertexArray; public void BindVertexArray(uint array) { glBindVertexArray.Invoke(array); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLDELETEVERTEXARRAYSPROC(int n, uint[] arrays); private PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays; public void DeleteVertexArrays(int n, uint[] arrays) { glDeleteVertexArrays.Invoke(n, arrays); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGENVERTEXARRAYSPROC(int n, uint[] arrays); private PFNGLGENVERTEXARRAYSPROC glGenVertexArrays; public void GenVertexArrays(int n, uint[] arrays) { glGenVertexArrays.Invoke(n, arrays); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate bool PFNGLISVERTEXARRAYPROC(uint array); private PFNGLISVERTEXARRAYPROC glIsVertexArray; public bool IsVertexArray(uint array) { return glIsVertexArray.Invoke(array); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLDRAWARRAYSINSTANCEDPROC(PrimitiveType mode, int first, int count, int instancecount); private PFNGLDRAWARRAYSINSTANCEDPROC glDrawArraysInstanced; public void DrawArraysInstanced(PrimitiveType mode, int first, int count, int instancecount) { glDrawArraysInstanced.Invoke(mode, first, count, instancecount); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLDRAWELEMENTSINSTANCEDPROC(PrimitiveType mode, int count, DrawElementsType type, IntPtr indices, int instancecount); private PFNGLDRAWELEMENTSINSTANCEDPROC glDrawElementsInstanced; public void DrawElementsInstanced(PrimitiveType mode, int count, DrawElementsType type, IntPtr indices, int instancecount) { glDrawElementsInstanced.Invoke(mode, count, type, indices, instancecount); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLTEXBUFFERPROC(TextureTarget target, InternalFormat internalformat, uint buffer); private PFNGLTEXBUFFERPROC glTexBuffer; public void TexBuffer(TextureTarget target, InternalFormat internalformat, uint buffer) { glTexBuffer.Invoke(target, internalformat, buffer); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLPRIMITIVERESTARTINDEXPROC(uint index); private PFNGLPRIMITIVERESTARTINDEXPROC glPrimitiveRestartIndex; public void PrimitiveRestartIndex(uint index) { glPrimitiveRestartIndex.Invoke(index); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLCOPYBUFFERSUBDATAPROC(CopyBufferSubDataTarget readTarget, CopyBufferSubDataTarget writeTarget, IntPtr readOffset, IntPtr writeOffset, IntPtr size); private PFNGLCOPYBUFFERSUBDATAPROC glCopyBufferSubData; public void CopyBufferSubData(CopyBufferSubDataTarget readTarget, CopyBufferSubDataTarget writeTarget, IntPtr readOffset, IntPtr writeOffset, IntPtr size) { glCopyBufferSubData.Invoke(readTarget, writeTarget, readOffset, writeOffset, size); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETUNIFORMINDICESPROC(uint program, int uniformCount, sbyte uniformNames, out uint uniformIndices); private PFNGLGETUNIFORMINDICESPROC glGetUniformIndices; public void GetUniformIndices(uint program, int uniformCount, sbyte uniformNames, out uint uniformIndices) { glGetUniformIndices.Invoke(program, uniformCount, uniformNames, out uniformIndices); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETACTIVEUNIFORMSIVPROC(uint program, int uniformCount, uint[] uniformIndices, UniformPName pname, out int parameters); private PFNGLGETACTIVEUNIFORMSIVPROC glGetActiveUniformsiv; public void GetActiveUniformsiv(uint program, int uniformCount, uint[] uniformIndices, UniformPName pname, out int parameters) { glGetActiveUniformsiv.Invoke(program, uniformCount, uniformIndices, pname, out parameters); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETACTIVEUNIFORMNAMEPROC(uint program, uint uniformIndex, int bufSize, out int length, out sbyte uniformName); private PFNGLGETACTIVEUNIFORMNAMEPROC glGetActiveUniformName; public void GetActiveUniformName(uint program, uint uniformIndex, int bufSize, out int length, out sbyte uniformName) { glGetActiveUniformName.Invoke(program, uniformIndex, bufSize, out length, out uniformName); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate uint PFNGLGETUNIFORMBLOCKINDEXPROC(uint program, sbyte[] uniformBlockName); private PFNGLGETUNIFORMBLOCKINDEXPROC glGetUniformBlockIndex; public uint GetUniformBlockIndex(uint program, sbyte[] uniformBlockName) { return glGetUniformBlockIndex.Invoke(program, uniformBlockName); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETACTIVEUNIFORMBLOCKIVPROC(uint program, uint uniformBlockIndex, UniformBlockPName pname, out int parameters); private PFNGLGETACTIVEUNIFORMBLOCKIVPROC glGetActiveUniformBlockiv; public void GetActiveUniformBlockiv(uint program, uint uniformBlockIndex, UniformBlockPName pname, out int parameters) { glGetActiveUniformBlockiv.Invoke(program, uniformBlockIndex, pname, out parameters); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC(uint program, uint uniformBlockIndex, int bufSize, out int length, out sbyte uniformBlockName); private PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glGetActiveUniformBlockName; public void GetActiveUniformBlockName(uint program, uint uniformBlockIndex, int bufSize, out int length, out sbyte uniformBlockName) { glGetActiveUniformBlockName.Invoke(program, uniformBlockIndex, bufSize, out length, out uniformBlockName); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLUNIFORMBLOCKBINDINGPROC(uint program, uint uniformBlockIndex, uint uniformBlockBinding); private PFNGLUNIFORMBLOCKBINDINGPROC glUniformBlockBinding; public void UniformBlockBinding(uint program, uint uniformBlockIndex, uint uniformBlockBinding) { glUniformBlockBinding.Invoke(program, uniformBlockIndex, uniformBlockBinding); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLDRAWELEMENTSBASEVERTEXPROC(PrimitiveType mode, int count, DrawElementsType type, IntPtr indices, int basevertex); private PFNGLDRAWELEMENTSBASEVERTEXPROC glDrawElementsBaseVertex; public void DrawElementsBaseVertex(PrimitiveType mode, int count, DrawElementsType type, IntPtr indices, int basevertex) { glDrawElementsBaseVertex.Invoke(mode, count, type, indices, basevertex); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC(PrimitiveType mode, uint start, uint end, int count, DrawElementsType type, IntPtr indices, int basevertex); private PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glDrawRangeElementsBaseVertex; public void DrawRangeElementsBaseVertex(PrimitiveType mode, uint start, uint end, int count, DrawElementsType type, IntPtr indices, int basevertex) { glDrawRangeElementsBaseVertex.Invoke(mode, start, end, count, type, indices, basevertex); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC(PrimitiveType mode, int count, DrawElementsType type, IntPtr indices, int instancecount, int basevertex); private PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glDrawElementsInstancedBaseVertex; public void DrawElementsInstancedBaseVertex(PrimitiveType mode, int count, DrawElementsType type, IntPtr indices, int instancecount, int basevertex) { glDrawElementsInstancedBaseVertex.Invoke(mode, count, type, indices, instancecount, basevertex); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC(PrimitiveType mode, int[] count, DrawElementsType type, int[] indices, int drawcount, int[] basevertex); private PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glMultiDrawElementsBaseVertex; public void MultiDrawElementsBaseVertex(PrimitiveType mode, int[] count, DrawElementsType type, int[] indices, int drawcount, int[] basevertex) { glMultiDrawElementsBaseVertex.Invoke(mode, count, type, indices, drawcount, basevertex); DetectGLError(); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLPROVOKINGVERTEXPROC(VertexProvokingMode mode); private PFNGLPROVOKINGVERTEXPROC glProvokingVertex; public void ProvokingVertex(VertexProvokingMode mode) { glProvokingVertex.Invoke(mode); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate IntPtr PFNGLFENCESYNCPROC(SyncCondition condition, uint flags); private PFNGLFENCESYNCPROC glFenceSync; public IntPtr FenceSync(SyncCondition condition, uint flags) { return glFenceSync.Invoke(condition, flags); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate bool PFNGLISSYNCPROC(IntPtr sync); private PFNGLISSYNCPROC glIsSync; public bool IsSync(IntPtr sync) { return glIsSync.Invoke(sync); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLDELETESYNCPROC(IntPtr sync); private PFNGLDELETESYNCPROC glDeleteSync; public void DeleteSync(IntPtr sync) { glDeleteSync.Invoke(sync); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate SyncStatus PFNGLCLIENTWAITSYNCPROC(IntPtr sync, SyncObjectMask flags, ulong timeout); private PFNGLCLIENTWAITSYNCPROC glClientWaitSync; public SyncStatus ClientWaitSync(IntPtr sync, SyncObjectMask flags, ulong timeout) { return glClientWaitSync.Invoke(sync, flags, timeout); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLWAITSYNCPROC(IntPtr sync, uint flags, ulong timeout); private PFNGLWAITSYNCPROC glWaitSync; public void WaitSync(IntPtr sync, uint flags, ulong timeout) { glWaitSync.Invoke(sync, flags, timeout); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETINTEGER64VPROC(GetPName pname, out long data); private PFNGLGETINTEGER64VPROC glGetInteger64v; public void GetInteger64v(GetPName pname, out long data) { glGetInteger64v.Invoke(pname, out data); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETSYNCIVPROC(IntPtr sync, SyncParameterName pname, int bufSize, out int length, out int values); private PFNGLGETSYNCIVPROC glGetSynciv; public void GetSynciv(IntPtr sync, SyncParameterName pname, int bufSize, out int length, out int values) { glGetSynciv.Invoke(sync, pname, bufSize, out length, out values); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETINTEGER64I_VPROC(TypeEnum target, uint index, out long data); private PFNGLGETINTEGER64I_VPROC glGetInteger64i_v; public void GetInteger64i_v(TypeEnum target, uint index, out long data) { glGetInteger64i_v.Invoke(target, index, out data); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETBUFFERPARAMETERI64VPROC(BufferTargetARB target, int pname, out long parameters); private PFNGLGETBUFFERPARAMETERI64VPROC glGetBufferParameteri64v; public void GetBufferParameteri64v(BufferTargetARB target, int pname, out long parameters) { glGetBufferParameteri64v.Invoke(target, pname, out parameters); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLFRAMEBUFFERTEXTUREPROC(FramebufferTarget target, FramebufferAttachment attachment, uint texture, int level); private PFNGLFRAMEBUFFERTEXTUREPROC glFramebufferTexture; public void FramebufferTexture(FramebufferTarget target, FramebufferAttachment attachment, uint texture, int level) { glFramebufferTexture.Invoke(target, attachment, texture, level); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLTEXIMAGE2DMULTISAMPLEPROC(TextureTarget target, int samples, InternalFormat internalformat, int width, int height, bool fixedsamplelocations); private PFNGLTEXIMAGE2DMULTISAMPLEPROC glTexImage2DMultisample; public void TexImage2DMultisample(TextureTarget target, int samples, InternalFormat internalformat, int width, int height, bool fixedsamplelocations) { glTexImage2DMultisample.Invoke(target, samples, internalformat, width, height, fixedsamplelocations); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLTEXIMAGE3DMULTISAMPLEPROC(TextureTarget target, int samples, InternalFormat internalformat, int width, int height, int depth, bool fixedsamplelocations); private PFNGLTEXIMAGE3DMULTISAMPLEPROC glTexImage3DMultisample; public void TexImage3DMultisample(TextureTarget target, int samples, InternalFormat internalformat, int width, int height, int depth, bool fixedsamplelocations) { glTexImage3DMultisample.Invoke(target, samples, internalformat, width, height, depth, fixedsamplelocations); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLGETMULTISAMPLEFVPROC(int pname, uint index, out float val); private PFNGLGETMULTISAMPLEFVPROC glGetMultisamplefv; public void GetMultisamplefv(int pname, uint index, out float val) { glGetMultisamplefv.Invoke(pname, index, out val); } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void PFNGLSAMPLEMASKIPROC(uint maskNumber, uint mask); private PFNGLSAMPLEMASKIPROC glSampleMaski; public void SampleMaski(uint maskNumber, uint mask) { glSampleMaski.Invoke(maskNumber, mask); } #endregion public GLContext(IntPtr windowHandle) { GetProcAddressHandler loader = SDL.SDL_GL_GetProcAddress; Handle = SDL.SDL_GL_CreateContext(windowHandle); if (Handle == null) { throw new FrameworkSDLException(); } #region OpenGLDelegateAssignment glCullFace = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glCullFace")); glFrontFace = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glFrontFace")); glHint = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glHint")); glLineWidth = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glLineWidth")); glPointSize = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glPointSize")); glPolygonMode = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glPolygonMode")); glScissor = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glScissor")); glTexParameterf = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glTexParameterf")); glTexParameterfv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glTexParameterfv")); glTexParameteri = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glTexParameteri")); glTexParameteriv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glTexParameteriv")); glTexImage1D = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glTexImage1D")); glTexImage2D = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glTexImage2D")); glDrawBuffer = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glDrawBuffer")); glClear = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glClear")); glClearColor = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glClearColor")); glClearStencil = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glClearStencil")); glClearDepth = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glClearDepth")); glStencilMask = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glStencilMask")); glColorMask = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glColorMask")); glDepthMask = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glDepthMask")); glDisable = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glDisable")); glEnable = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glEnable")); glFinish = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glFinish")); glFlush = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glFlush")); glBlendFunc = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glBlendFunc")); glLogicOp = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glLogicOp")); glStencilFunc = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glStencilFunc")); glStencilOp = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glStencilOp")); glDepthFunc = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glDepthFunc")); glPixelStoref = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glPixelStoref")); glPixelStorei = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glPixelStorei")); glReadBuffer = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glReadBuffer")); glReadPixels = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glReadPixels")); glGetBooleanv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetBooleanv")); glGetDoublev = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetDoublev")); glGetError = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetError")); glGetFloatv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetFloatv")); glGetIntegerv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetIntegerv")); glGetString = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetString")); glGetTexImage = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetTexImage")); glGetTexParameterfv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetTexParameterfv")); glGetTexParameteriv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetTexParameteriv")); glGetTexLevelParameterfv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetTexLevelParameterfv")); glGetTexLevelParameteriv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetTexLevelParameteriv")); glIsEnabled = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glIsEnabled")); glDepthRange = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glDepthRange")); glViewport = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glViewport")); glDrawArrays = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glDrawArrays")); glDrawElements = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glDrawElements")); glPolygonOffset = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glPolygonOffset")); glCopyTexImage1D = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glCopyTexImage1D")); glCopyTexImage2D = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glCopyTexImage2D")); glCopyTexSubImage1D = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glCopyTexSubImage1D")); glCopyTexSubImage2D = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glCopyTexSubImage2D")); glTexSubImage1D = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glTexSubImage1D")); glTexSubImage2D = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glTexSubImage2D")); glBindTexture = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glBindTexture")); glDeleteTextures = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glDeleteTextures")); glGenTextures = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGenTextures")); glIsTexture = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glIsTexture")); glDrawRangeElements = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glDrawRangeElements")); glTexImage3D = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glTexImage3D")); glTexSubImage3D = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glTexSubImage3D")); glCopyTexSubImage3D = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glCopyTexSubImage3D")); glActiveTexture = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glActiveTexture")); glSampleCoverage = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glSampleCoverage")); glCompressedTexImage3D = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glCompressedTexImage3D")); glCompressedTexImage2D = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glCompressedTexImage2D")); glCompressedTexImage1D = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glCompressedTexImage1D")); glCompressedTexSubImage3D = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glCompressedTexSubImage3D")); glCompressedTexSubImage2D = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glCompressedTexSubImage2D")); glCompressedTexSubImage1D = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glCompressedTexSubImage1D")); glGetCompressedTexImage = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetCompressedTexImage")); glBlendFuncSeparate = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glBlendFuncSeparate")); glMultiDrawArrays = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glMultiDrawArrays")); glMultiDrawElements = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glMultiDrawElements")); glPointParameterf = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glPointParameterf")); glPointParameterfv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glPointParameterfv")); glPointParameteri = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glPointParameteri")); glPointParameteriv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glPointParameteriv")); glVertexAttribP4uiv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttribP4uiv")); glVertexAttribP4ui = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttribP4ui")); glVertexAttribP3uiv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttribP3uiv")); glVertexAttribP3ui = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttribP3ui")); glVertexAttribP2uiv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttribP2uiv")); glVertexAttribP2ui = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttribP2ui")); glVertexAttribP1uiv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttribP1uiv")); glVertexAttribP1ui = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttribP1ui")); glVertexAttribDivisor = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttribDivisor")); glGetQueryObjectui64v = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetQueryObjectui64v")); glGetQueryObjecti64v = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetQueryObjecti64v")); glQueryCounter = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glQueryCounter")); glGetSamplerParameterIuiv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetSamplerParameterIuiv")); glGetSamplerParameterfv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetSamplerParameterfv")); glGetSamplerParameterIiv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetSamplerParameterIiv")); glGetSamplerParameteriv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetSamplerParameteriv")); glSamplerParameterIuiv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glSamplerParameterIuiv")); glSamplerParameterIiv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glSamplerParameterIiv")); glSamplerParameterfv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glSamplerParameterfv")); glSamplerParameterf = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glSamplerParameterf")); glSamplerParameteriv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glSamplerParameteriv")); glSamplerParameteri = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glSamplerParameteri")); glBindSampler = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glBindSampler")); glIsSampler = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glIsSampler")); glDeleteSamplers = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glDeleteSamplers")); glGenSamplers = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGenSamplers")); glGetFragDataIndex = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetFragDataIndex")); glBindFragDataLocationIndexed = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glBindFragDataLocationIndexed")); glBlendColor = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glBlendColor")); glBlendEquation = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glBlendEquation")); glGenQueries = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGenQueries")); glDeleteQueries = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glDeleteQueries")); glIsQuery = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glIsQuery")); glBeginQuery = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glBeginQuery")); glEndQuery = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glEndQuery")); glGetQueryiv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetQueryiv")); glGetQueryObjectiv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetQueryObjectiv")); glGetQueryObjectuiv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetQueryObjectuiv")); glBindBuffer = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glBindBuffer")); glDeleteBuffers = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glDeleteBuffers")); glGenBuffers = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGenBuffers")); glIsBuffer = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glIsBuffer")); glBufferData = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glBufferData")); glBufferSubData = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glBufferSubData")); glGetBufferSubData = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetBufferSubData")); glMapBuffer = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glMapBuffer")); glUnmapBuffer = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glUnmapBuffer")); glGetBufferParameteriv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetBufferParameteriv")); glGetBufferPointerv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetBufferPointerv")); glBlendEquationSeparate = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glBlendEquationSeparate")); glDrawBuffers = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glDrawBuffers")); glStencilOpSeparate = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glStencilOpSeparate")); glStencilFuncSeparate = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glStencilFuncSeparate")); glStencilMaskSeparate = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glStencilMaskSeparate")); glAttachShader = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glAttachShader")); glBindAttribLocation = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glBindAttribLocation")); glCompileShader = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glCompileShader")); glCreateProgram = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glCreateProgram")); glCreateShader = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glCreateShader")); glDeleteProgram = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glDeleteProgram")); glDeleteShader = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glDeleteShader")); glDetachShader = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glDetachShader")); glDisableVertexAttribArray = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glDisableVertexAttribArray")); glEnableVertexAttribArray = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glEnableVertexAttribArray")); glGetActiveAttrib = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetActiveAttrib")); glGetActiveUniform = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetActiveUniform")); glGetAttachedShaders = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetAttachedShaders")); glGetAttribLocation = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetAttribLocation")); glGetProgramiv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetProgramiv")); glGetProgramInfoLog = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetProgramInfoLog")); glGetShaderiv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetShaderiv")); glGetShaderInfoLog = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetShaderInfoLog")); glGetShaderSource = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetShaderSource")); glGetUniformLocation = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetUniformLocation")); glGetUniformfv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetUniformfv")); glGetUniformiv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetUniformiv")); glGetVertexAttribdv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetVertexAttribdv")); glGetVertexAttribfv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetVertexAttribfv")); glGetVertexAttribiv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetVertexAttribiv")); glGetVertexAttribPointerv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetVertexAttribPointerv")); glIsProgram = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glIsProgram")); glIsShader = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glIsShader")); glLinkProgram = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glLinkProgram")); glShaderSource = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glShaderSource")); glUseProgram = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glUseProgram")); glUniform1f = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glUniform1f")); glUniform2f = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glUniform2f")); glUniform3f = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glUniform3f")); glUniform4f = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glUniform4f")); glUniform1i = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glUniform1i")); glUniform2i = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glUniform2i")); glUniform3i = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glUniform3i")); glUniform4i = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glUniform4i")); glUniform1fv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glUniform1fv")); glUniform2fv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glUniform2fv")); glUniform3fv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glUniform3fv")); glUniform4fv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glUniform4fv")); glUniform1iv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glUniform1iv")); glUniform2iv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glUniform2iv")); glUniform3iv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glUniform3iv")); glUniform4iv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glUniform4iv")); glUniformMatrix2fv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glUniformMatrix2fv")); glUniformMatrix3fv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glUniformMatrix3fv")); glUniformMatrix4fv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glUniformMatrix4fv")); glValidateProgram = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glValidateProgram")); glVertexAttrib1d = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttrib1d")); glVertexAttrib1dv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttrib1dv")); glVertexAttrib1f = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttrib1f")); glVertexAttrib1fv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttrib1fv")); glVertexAttrib1s = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttrib1s")); glVertexAttrib1sv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttrib1sv")); glVertexAttrib2d = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttrib2d")); glVertexAttrib2dv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttrib2dv")); glVertexAttrib2f = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttrib2f")); glVertexAttrib2fv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttrib2fv")); glVertexAttrib2s = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttrib2s")); glVertexAttrib2sv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttrib2sv")); glVertexAttrib3d = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttrib3d")); glVertexAttrib3dv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttrib3dv")); glVertexAttrib3f = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttrib3f")); glVertexAttrib3fv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttrib3fv")); glVertexAttrib3s = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttrib3s")); glVertexAttrib3sv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttrib3sv")); glVertexAttrib4Nbv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttrib4Nbv")); glVertexAttrib4Niv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttrib4Niv")); glVertexAttrib4Nsv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttrib4Nsv")); glVertexAttrib4Nub = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttrib4Nub")); glVertexAttrib4Nubv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttrib4Nubv")); glVertexAttrib4Nuiv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttrib4Nuiv")); glVertexAttrib4Nusv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttrib4Nusv")); glVertexAttrib4bv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttrib4bv")); glVertexAttrib4d = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttrib4d")); glVertexAttrib4dv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttrib4dv")); glVertexAttrib4f = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttrib4f")); glVertexAttrib4fv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttrib4fv")); glVertexAttrib4iv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttrib4iv")); glVertexAttrib4s = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttrib4s")); glVertexAttrib4sv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttrib4sv")); glVertexAttrib4ubv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttrib4ubv")); glVertexAttrib4uiv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttrib4uiv")); glVertexAttrib4usv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttrib4usv")); glVertexAttribPointer = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttribPointer")); glUniformMatrix2x3fv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glUniformMatrix2x3fv")); glUniformMatrix3x2fv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glUniformMatrix3x2fv")); glUniformMatrix2x4fv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glUniformMatrix2x4fv")); glUniformMatrix4x2fv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glUniformMatrix4x2fv")); glUniformMatrix3x4fv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glUniformMatrix3x4fv")); glUniformMatrix4x3fv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glUniformMatrix4x3fv")); glColorMaski = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glColorMaski")); glGetBooleani_v = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetBooleani_v")); glGetIntegeri_v = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetIntegeri_v")); glEnablei = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glEnablei")); glDisablei = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glDisablei")); glIsEnabledi = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glIsEnabledi")); glBeginTransformFeedback = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glBeginTransformFeedback")); glEndTransformFeedback = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glEndTransformFeedback")); glBindBufferRange = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glBindBufferRange")); glBindBufferBase = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glBindBufferBase")); glTransformFeedbackVaryings = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glTransformFeedbackVaryings")); glGetTransformFeedbackVarying = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetTransformFeedbackVarying")); glClampColor = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glClampColor")); glBeginConditionalRender = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glBeginConditionalRender")); glEndConditionalRender = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glEndConditionalRender")); glVertexAttribIPointer = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttribIPointer")); glGetVertexAttribIiv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetVertexAttribIiv")); glGetVertexAttribIuiv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetVertexAttribIuiv")); glVertexAttribI1i = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttribI1i")); glVertexAttribI2i = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttribI2i")); glVertexAttribI3i = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttribI3i")); glVertexAttribI4i = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttribI4i")); glVertexAttribI1ui = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttribI1ui")); glVertexAttribI2ui = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttribI2ui")); glVertexAttribI3ui = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttribI3ui")); glVertexAttribI4ui = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttribI4ui")); glVertexAttribI1iv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttribI1iv")); glVertexAttribI2iv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttribI2iv")); glVertexAttribI3iv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttribI3iv")); glVertexAttribI4iv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttribI4iv")); glVertexAttribI1uiv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttribI1uiv")); glVertexAttribI2uiv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttribI2uiv")); glVertexAttribI3uiv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttribI3uiv")); glVertexAttribI4uiv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttribI4uiv")); glVertexAttribI4bv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttribI4bv")); glVertexAttribI4sv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttribI4sv")); glVertexAttribI4ubv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttribI4ubv")); glVertexAttribI4usv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glVertexAttribI4usv")); glGetUniformuiv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetUniformuiv")); glBindFragDataLocation = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glBindFragDataLocation")); glGetFragDataLocation = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetFragDataLocation")); glUniform1ui = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glUniform1ui")); glUniform2ui = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glUniform2ui")); glUniform3ui = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glUniform3ui")); glUniform4ui = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glUniform4ui")); glUniform1uiv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glUniform1uiv")); glUniform2uiv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glUniform2uiv")); glUniform3uiv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glUniform3uiv")); glUniform4uiv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glUniform4uiv")); glTexParameterIiv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glTexParameterIiv")); glTexParameterIuiv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glTexParameterIuiv")); glGetTexParameterIiv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetTexParameterIiv")); glGetTexParameterIuiv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetTexParameterIuiv")); glClearBufferiv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glClearBufferiv")); glClearBufferuiv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glClearBufferuiv")); glClearBufferfv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glClearBufferfv")); glClearBufferfi = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glClearBufferfi")); glGetStringi = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetStringi")); glIsRenderbuffer = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glIsRenderbuffer")); glBindRenderbuffer = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glBindRenderbuffer")); glDeleteRenderbuffers = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glDeleteRenderbuffers")); glGenRenderbuffers = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGenRenderbuffers")); glRenderbufferStorage = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glRenderbufferStorage")); glGetRenderbufferParameteriv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetRenderbufferParameteriv")); glIsFramebuffer = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glIsFramebuffer")); glBindFramebuffer = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glBindFramebuffer")); glDeleteFramebuffers = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glDeleteFramebuffers")); glGenFramebuffers = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGenFramebuffers")); glCheckFramebufferStatus = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glCheckFramebufferStatus")); glFramebufferTexture1D = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glFramebufferTexture1D")); glFramebufferTexture2D = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glFramebufferTexture2D")); glFramebufferTexture3D = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glFramebufferTexture3D")); glFramebufferRenderbuffer = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glFramebufferRenderbuffer")); glGetFramebufferAttachmentParameteriv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetFramebufferAttachmentParameteriv")); glGenerateMipmap = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGenerateMipmap")); glBlitFramebuffer = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glBlitFramebuffer")); glRenderbufferStorageMultisample = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glRenderbufferStorageMultisample")); glFramebufferTextureLayer = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glFramebufferTextureLayer")); glMapBufferRange = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glMapBufferRange")); glFlushMappedBufferRange = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glFlushMappedBufferRange")); glBindVertexArray = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glBindVertexArray")); glDeleteVertexArrays = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glDeleteVertexArrays")); glGenVertexArrays = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGenVertexArrays")); glIsVertexArray = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glIsVertexArray")); glDrawArraysInstanced = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glDrawArraysInstanced")); glDrawElementsInstanced = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glDrawElementsInstanced")); glTexBuffer = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glTexBuffer")); glPrimitiveRestartIndex = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glPrimitiveRestartIndex")); glCopyBufferSubData = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glCopyBufferSubData")); glGetUniformIndices = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetUniformIndices")); glGetActiveUniformsiv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetActiveUniformsiv")); glGetActiveUniformName = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetActiveUniformName")); glGetUniformBlockIndex = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetUniformBlockIndex")); glGetActiveUniformBlockiv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetActiveUniformBlockiv")); glGetActiveUniformBlockName = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetActiveUniformBlockName")); glUniformBlockBinding = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glUniformBlockBinding")); glDrawElementsBaseVertex = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glDrawElementsBaseVertex")); glDrawRangeElementsBaseVertex = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glDrawRangeElementsBaseVertex")); glDrawElementsInstancedBaseVertex = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glDrawElementsInstancedBaseVertex")); glMultiDrawElementsBaseVertex = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glMultiDrawElementsBaseVertex")); glProvokingVertex = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glProvokingVertex")); glFenceSync = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glFenceSync")); glIsSync = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glIsSync")); glDeleteSync = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glDeleteSync")); glClientWaitSync = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glClientWaitSync")); glWaitSync = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glWaitSync")); glGetInteger64v = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetInteger64v")); glGetSynciv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetSynciv")); glGetInteger64i_v = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetInteger64i_v")); glGetBufferParameteri64v = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetBufferParameteri64v")); glFramebufferTexture = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glFramebufferTexture")); glTexImage2DMultisample = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glTexImage2DMultisample")); glTexImage3DMultisample = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glTexImage3DMultisample")); glGetMultisamplefv = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glGetMultisamplefv")); glSampleMaski = Marshal.GetDelegateForFunctionPointer(loader.Invoke("glSampleMaski")); #endregion } /// /// Checks for any issues in this OpenGL Context and throws an exception if it detects one. /// May throw OpenGLException. /// public void DetectGLError() { OpenGL.ErrorCode code = GetError(); if (code != OpenGL.ErrorCode.NoError) { throw new OpenGLErrorException(code); } } public void GetViewport(out int x, out int y, out int width, out int height) { int[] viewport = new int[4]; GetIntegerv(GetPName.Viewport, viewport); x = viewport[0]; y = viewport[1]; width = viewport[2]; height = viewport[3]; } protected virtual void Dispose(bool disposing) { if (!disposed) { if (disposing) { } SDL.SDL_GL_DeleteContext(Handle); disposed = true; } } ~GLContext() { Dispose(disposing: false); } public void Dispose() { Dispose(disposing: true); GC.SuppressFinalize(this); } } }