/*

Boost Software License - Version 1.0 - August 17th,2003

Permission is hereby granted,free of charge,to any person or organization
obtaining a copy of the software and accompanying documentation covered by
this license(the "Software") to use,reproduce,display,distribute,
execute,and transmit the Software,and to prepare derivative works of the
Software,and to permit third-parties to whom the Software is furnished to
do so,all subject to the following:

The copyright notices in the Software and this entire statement,including
the above license grant,this restriction and the following disclaimer,
must be included in all copies of the Software,in whole or in part,and
all derivative works of the Software,unless such copies or derivative
works are solely in the form of machine-executable object code generated by
a source language processor.

THE SOFTWARE IS PROVIDED "AS IS",WITHOUT WARRANTY OF ANY KIND,EXPRESS OR
IMPLIED,INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE,TITLE AND NON-INFRINGEMENT. IN NO EVENT
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
FOR ANY DAMAGES OR OTHER LIABILITY,WHETHER IN CONTRACT,TORT OR OTHERWISE,
ARISING FROM,OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.

*/
module derelict.sdl2.internal.gpu_dynamic;

import derelict.sdl2.config;

static if(!staticGPU) {
    import core.stdc.config,
           core.stdc.stdarg;
    import derelict.sdl2.internal.gpu_types,
           derelict.sdl2.internal.sdl_types;

    extern(C) @nogc nothrow {
        alias da_GPU_GetLinkedVersion = SDL_version function();
        alias da_GPU_GetInitWindow = uint function();
        alias da_GPU_SetPreInitFlags = void function(GPU_InitFlagEnum);
        alias da_GPU_GetPreInitFlags = GPU_InitFlagEnum function();
        alias da_GPU_SetRequiredFeatures = void function(GPU_FeatureEnum);
        alias da_GPU_GetRequiredFeatures = GPU_FeatureEnum function();
        alias da_GPU_GetDefaultRendererOrder = void function(int*,GPU_RendererID*);
        alias da_GPU_GetRendererOrder = void function(int*,GPU_RendererID);
        alias da_GPU_SetRendererOrder = void function(int*,GPU_RendererID);
        alias da_GPU_Init = GPU_Target* function(ushort,ushort,GPU_WindowFlagEnum);
        alias da_GPU_InitRenderer = GPU_Target* function(GPU_RendererEnum,ushort,ushort,GPU_WindowFlagEnum);
        alias da_GPU_InitRendererByID = GPU_Target* function(GPU_RendererID,ushort,ushort,GPU_WindowFlagEnum);
        alias da_GPU_IsFeatureEnabled = GPU_bool function(GPU_FeatureEnum);
        alias da_GPU_CloseCurrentRenderer = void function();
        alias da_GPU_Quit = void function();
        alias da_GPU_SetDebugLevel = void function(GPU_DebugLevelEnum);
        alias da_GPU_GetDebugLevel = GPU_DebugLevelEnum function();
        alias da_GPU_LogInfo = void function(const(char)*,...);
        alias da_GPU_LogWarning = void function(const(char)*,...);
        alias da_GPU_LogError = void function(const(char)*,...);
        alias da_GPU_SetLogCallback = void function(LogCallback);
        alias da_GPU_PushErrorCode = void function(const(char)*,GPU_ErrorEnum,const(char)*,...);
        alias da_GPU_PopErrorCode = GPU_ErrorObject function();
        alias da_GPU_GetErrorString = const(char)* function(GPU_ErrorEnum);
        alias da_GPU_SetErrorQueueMax = void function(uint);
        alias da_GPU_MakeRendererID = GPU_RendererID function(const(char)*,GPU_RendererEnum,int,int);
        alias da_GPU_GetRendererID = GPU_RendererID function(GPU_RendererEnum);
        alias da_GPU_GetNumRegisteredRenderers = int function();
        alias da_GPU_GetRegisteredRendererList = void function(GPU_RendererID*);
        alias da_GPU_RegisterRenderer = void function(GPU_RendererID,RendererConstructor,RendererDestructor);
        alias da_GPU_ReserveNextRendererEnum = GPU_RendererEnum function();
        alias da_GPU_GetNumActiveRenderers = int function();
        alias da_GPU_GetActiveRendererList = void function(GPU_RendererID*);
        alias da_GPU_GetCurrentRenderer = GPU_Renderer* function();
        alias da_GPU_SetCurrentRenderer = void function(GPU_RendererID);
        alias da_GPU_GetRenderer = GPU_Renderer* function(GPU_RendererID);
        alias da_GPU_FreeRenderer = void function(GPU_Renderer*);
        alias da_GPU_ResetRendererState = void function();
        alias da_GPU_SetCoordinateMode = void function(GPU_bool);
        alias da_GPU_GetCoordinateMode = GPU_bool function();
        alias da_GPU_SetDefaultAnchor = void function(float,float);
        alias da_GPU_GetDefaultAnchor = void function(float*,float*);
        alias da_GPU_GetContextTarget = GPU_Target* function();
        alias da_GPU_GetWindowTarget = GPU_Target* function(uint);
        alias da_GPU_CreateTargetFromWindow = GPU_Target* function(uint);
        alias da_GPU_MakeCurrent = void function(GPU_Target*,uint);
        alias da_GPU_SetWindowResolution = GPU_bool function(ushort,ushort);
        alias da_GPU_SetFullscreen = GPU_bool function(GPU_bool,GPU_bool);
        alias da_GPU_GetFullscreen = GPU_bool function();
        alias da_GPU_SetShapeBlending = void function(GPU_bool);
        alias da_GPU_GetBlendModeFromPreset = GPU_BlendMode function(GPU_BlendPresetEnum);
        alias da_GPU_SetShapeBlendFunction = void function(GPU_BlendFuncEnum,GPU_BlendFuncEnum,GPU_BlendFuncEnum,GPU_BlendFuncEnum);
        alias da_GPU_SetShapeBlendEquation = void function(GPU_BlendEqEnum,GPU_BlendEqEnum);
        alias da_GPU_SetShapeBlendMode = void function(GPU_BlendPresetEnum);
        alias da_GPU_SetLineThickness = float function(float);
        alias da_GPU_GetLineThickness = float function();
        alias da_GPU_CreateAliasTarget = GPU_Target* function(GPU_Target*);
        alias da_GPU_LoadTarget = GPU_Target* function(GPU_Image*);
        alias da_GPU_FreeTarget = void function(GPU_Target*);
        alias da_GPU_SetVirtualResolution = void function(GPU_Target*,ushort,ushort);
        alias da_GPU_GetVirtualResolution = void function(GPU_Target*,ushort*,ushort*);
        alias da_GPU_GetVirtualCoords = void function(GPU_Target*,float*,float*,float,float);
        alias da_GPU_UnsetVirtualResolution = void function(GPU_Target*);
        alias da_GPU_MakeRect = GPU_Rect function(float,float,float,float);
        alias da_GPU_MakeColor = SDL_Color function(ubyte,ubyte,ubyte,ubyte);
        alias da_GPU_SetViewport = void function(GPU_Target*,GPU_Rect);
        alias da_GPU_UnsetViewport = void function(GPU_Target*);
        alias da_GPU_GetDefaultCamera = GPU_Camera function();
        alias da_GPU_GetCamera = GPU_Camera function(GPU_Target*);
        alias da_GPU_SetCamera = GPU_Camera function(GPU_Target*,GPU_Camera);
        alias da_GPU_EnableCamera = void function(GPU_Target*,GPU_bool);
        alias da_GPU_IsCameraEnabled = GPU_bool function(GPU_Target*);
        alias da_GPU_GetPixel = SDL_Color function(GPU_Target*,short,short);
        alias da_GPU_SetClipRect = GPU_Rect function(GPU_Target*,GPU_Rect);
        alias da_GPU_SetClip = GPU_Rect function(short,short,ushort,ushort);
        alias da_GPU_UnsetClip = void function(GPU_Target*);
        alias da_GPU_IntersectRect = GPU_bool function(GPU_Rect,GPU_Rect,GPU_Rect*);
        alias da_GPU_IntersectClipRect = GPU_bool function(GPU_Target*,GPU_Rect);
        alias da_GPU_SetTargetColor = void function(GPU_Target*,SDL_Color);
        alias da_GPU_SetTargetRGB = void function(GPU_Target*,ubyte,ubyte,ubyte);
        alias da_GPU_SetTargetRGBA = void function(GPU_Target*,ubyte,ubyte,ubyte,ubyte);
        alias da_GPU_UnsetTargetColor = void function(GPU_Target*);
        alias da_GPU_LoadSurface = SDL_Surface* function(const(char*));
        alias da_GPU_LoadSurface_RW = SDL_Surface* function(SDL_RWops*,GPU_bool);
        alias da_GPU_SaveSurface = GPU_bool function(SDL_Surface*,const(char)*,GPU_FileFormatEnum);
        alias da_GPU_SaveSurface_RW = GPU_bool function(SDL_Surface*,SDL_RWops*,GPU_bool,GPU_FileFormatEnum);
        alias da_GPU_CreateImage = GPU_Image* function(ushort,ushort,GPU_FormatEnum);
        alias da_GPU_CreateImageUsingTexture = GPU_Image* function(uint,GPU_bool);
        alias da_GPU_LoadImage = GPU_Image* function(const(char)*);
        alias da_GPU_LoadImage_RW = GPU_Image* function(SDL_RWops*,GPU_bool);
        alias da_GPU_CreateAliasImage = GPU_Image* function(GPU_Image*);
        alias da_GPU_CopyImage = GPU_Image* function(GPU_Image*);
        alias da_GPU_FreeImage = void function(GPU_Image*);
        alias da_GPU_SetImageVirtualResolution = void function(GPU_Image*,ushort,ushort);
        alias da_GPU_UnsetImageVirtualResolution = void function(GPU_Image*);
        alias da_GPU_UpdateImage = void function(GPU_Image*,const(GPU_Rect)*,SDL_Surface*,const(GPU_Rect)*);
        alias da_GPU_UpdateImageBytes = void function(GPU_Image*,const(GPU_Rect)*,const(ubyte)*,int);
        alias da_GPU_ReplaceImage = GPU_bool function(GPU_Image*,SDL_Surface*,const(GPU_Rect)*);
        alias da_GPU_SaveImage = GPU_bool function(GPU_Image*,const(char)*,GPU_FileFormatEnum);
        alias da_GPU_SaveImage_RW = GPU_bool function(GPU_Image*,SDL_RWops*,GPU_bool,GPU_FileFormatEnum);
        alias da_GPU_GenerateMipmaps = void function(GPU_Image*);
        alias da_GPU_SetColor = void function(GPU_Image*,SDL_Color);
        alias da_GPU_SetRGB = void function(GPU_Image*,ubyte,ubyte,ubyte);
        alias da_GPU_SetRGBA = void function(GPU_Image*,ubyte,ubyte,ubyte,ubyte);
        alias da_GPU_UnsetColor = void function(GPU_Image*);
        alias da_GPU_GetBlending = GPU_bool function(GPU_Image*);
        alias da_GPU_SetBlending = void function(GPU_Image*,GPU_bool);
        alias da_GPU_SetBlendFunction = void function(GPU_Image*,GPU_BlendFuncEnum,GPU_BlendFuncEnum,GPU_BlendFuncEnum,GPU_BlendFuncEnum);
        alias da_GPU_SetBlendEquation = void function(GPU_Image*,GPU_BlendEqEnum,GPU_BlendEqEnum);
        alias da_GPU_SetBlendMode = void function(GPU_Image*,GPU_BlendPresetEnum);
        alias da_GPU_SetImageFilter = void function(GPU_Image*,GPU_FilterEnum);
        alias da_GPU_SetAnchor = void function(GPU_Image*,float,float);
        alias da_GPU_GetAnchor = void function(GPU_Image*,float*,float*);
        alias da_GPU_GetSnapMode = GPU_SnapEnum function(GPU_Image*);
        alias da_GPU_SetSnapMode = void function(GPU_Image*,GPU_SnapEnum);
        alias da_GPU_SetWrapMode = void function(GPU_Image*,GPU_WrapEnum,GPU_WrapEnum);
        alias da_GPU_CopyImageFromSurface = GPU_Image* function(SDL_Surface*);
        alias da_GPU_CopyImageFromTarget = GPU_Image* function(GPU_Target*);
        alias da_GPU_CopySurfaceFromTarget = SDL_Surface* function(GPU_Target*);
        alias da_GPU_CopySurfaceFromImage = SDL_Surface* function(GPU_Image*);
        alias da_GPU_VectorLength = float function(float*);
        alias da_GPU_VectorNormalize = void function(float*);
        alias da_GPU_VectorDot = float function(float*,float*);
        alias da_GPU_VectorCross = void function(float*,float*,float*);
        alias da_GPU_VectorCopy = void function(float*,float*);
        alias da_GPU_VectorApplyMatrix = void function(float*,float*);
        alias da_GPU_MatrixCopy = void function(float*,float*);
        alias da_GPU_MatrixIdentity = void function(float*);
        alias da_GPU_MatrixOrtho = void function(float*,float,float,float,float,float,float);
        alias da_GPU_MatrixFrustum = void function(float*,float,float,float,float,float,float);
        alias da_GPU_MatrixPerspective = void function(float*,float,float,float,float);
        alias da_GPU_MatrixLookAt = void function(float*,float,float,float,float,float,float,float,float,float);
        alias da_GPU_MatrixTranslate = void function(float*,float,float,float);
        alias da_GPU_MatrixScale = void function(float*,float,float,float);
        alias da_GPU_MatrixRotate = void function(float*,float,float,float,float);
        alias da_GPU_MatrixMultiply = void function(float*,const(float)*,const(float)*);
        alias da_GPU_MultiplyAndAssign = void function(float*,float*);
        alias da_GPU_GetMatrixString = const(char)* function(float*);
        alias da_GPU_GetCurrentMatrix = float* function();
        alias da_GPU_GetModelView = float* function();
        alias da_GPU_GetProjection = float* function();
        alias da_GPU_GetModelViewProjection = void function(float*);
        alias da_GPU_MatrixMode = void function(int);
        alias da_GPU_PushMatrix = void function();
        alias da_GPU_PopMatrix = void function();
        alias da_GPU_LoadIdentity = void function();
        alias da_GPU_Ortho = void function(float,float,float,float,float,float);
        alias da_GPU_Frustum = void function(float,float,float,float,float,float);
        alias da_GPU_Translate = void function(float,float,float);
        alias da_GPU_Scale = void function(float,float,float);
        alias da_GPU_Rotate = void function(float,float,float,float);
        alias da_GPU_MultMatrix = void function(float*);
        alias da_GPU_Clear = void function(GPU_Target*);
        alias da_GPU_ClearColor = void function(GPU_Target*,SDL_Color);
        alias da_GPU_ClearRGB = void function(GPU_Target*,ubyte,ubyte,ubyte);
        alias da_GPU_ClearRGBA = void function(GPU_Target*,ubyte,ubyte,ubyte,ubyte);
        alias da_GPU_Blit = void function(GPU_Image*,GPU_Rect*,GPU_Target*,float,float);
        alias da_GPU_BlitRotate = void function(GPU_Image*,GPU_Rect*,GPU_Target*,float,float,float);
        alias da_GPU_BlitScale = void function(GPU_Image*,GPU_Rect*,GPU_Target*,float,float,float,float);
        alias da_GPU_BlitTransform = void function(GPU_Image*,GPU_Rect*,GPU_Target*,float,float,float,float,float);
        alias da_GPU_BlitTransformX = void function(GPU_Image*,GPU_Rect*,GPU_Target*,float,float,float,float,float,float,float);
        alias da_GPU_BlitRect = void function(GPU_Image*,GPU_Rect*,GPU_Target*,GPU_Rect*);
        alias da_GPU_BlitRectX = void function(GPU_Image*,GPU_Rect*,GPU_Target*,GPU_Rect*,float,float,float,GPU_FlipEnum);
        alias da_GPU_TriangleBatch = void function(GPU_Image*,GPU_Target*,ushort,float*,uint,ushort*,GPU_BatchFlagEnum);
        alias da_GPU_TriangleBatchX = void function(GPU_Image*,GPU_Target*,ushort,void*,uint,ushort*,GPU_BatchFlagEnum);
        alias da_GPU_FlushBlitBuffer = void function();
        alias da_GPU_Flip = void function(GPU_Target*);
        alias da_GPU_Pixel = void function(GPU_Target*,float,float,SDL_Color);
        alias da_GPU_Line = void function(GPU_Target*,float,float,float,float,SDL_Color);
        alias da_GPU_Arc = void function(GPU_Target*,float,float,float,float,float,SDL_Color);
        alias da_GPU_ArcFilled = void function(GPU_Target*,float,float,float,float,float,SDL_Color);
        alias da_GPU_Circle = void function(GPU_Target*,float,float,float,SDL_Color);
        alias da_GPU_CircleFilled = void function(GPU_Target*,float,float,float,SDL_Color);
        alias da_GPU_Ellipse = void function(GPU_Target*,float,float,float,float,float,SDL_Color);
        alias da_GPU_EllipseFilled = void function(GPU_Target*,float,float,float,float,float,SDL_Color);
        alias da_GPU_Sector = void function(GPU_Target*,float,float,float,float,float,float,SDL_Color);
        alias da_GPU_SectorFilled = void function(GPU_Target*,float,float,float,float,float,float,SDL_Color);
        alias da_GPU_Tri = void function(GPU_Target*,float,float,float,float,float,float,SDL_Color);
        alias da_GPU_TriFilled = void function(GPU_Target*,float,float,float,float,float,float,SDL_Color);
        alias da_GPU_Rectangle = void function(GPU_Target*,float,float,float,float,SDL_Color);
        alias da_GPU_Rectangle2 = void function(GPU_Target*,GPU_Rect,SDL_Color);
        alias da_GPU_RectangleFilled = void function(GPU_Target*,float,float,float,float,SDL_Color);
        alias da_GPU_RectangleFilled2 = void function(GPU_Target*,GPU_Rect,SDL_Color);
        alias da_GPU_RectangleRound = void function(GPU_Target*,float,float,float,float,float,SDL_Color);
        alias da_GPU_RectangleRound2 = void function(GPU_Target*,GPU_Rect,float,SDL_Color);
        alias da_GPU_RectangleRoundFilled = void function(GPU_Target*,float,float,float,float,float,SDL_Color);
        alias da_GPU_RectangleRoundFilled2 = void function(GPU_Target*,GPU_Rect,float,SDL_Color);
        alias da_GPU_Polygon = void function(GPU_Target*,uint,float*,SDL_Color);
        alias da_GPU_PolygonFilled = void function(GPU_Target*,uint,float*,SDL_Color);
        alias da_GPU_CreateShaderProgram = uint function();
        alias da_GPU_FreeShaderProgram = void function(uint);
        alias da_GPU_CompileShader_RW = uint function(GPU_ShaderEnum,SDL_RWops*,GPU_bool);
        alias da_GPU_CompileShader = uint function(GPU_ShaderEnum,const(char)*);
        alias da_GPU_LoadShader = uint function(GPU_ShaderEnum,const(char)*);
        alias da_GPU_LinkShaders = uint function(uint,uint);
        alias da_GPU_LinkManyShaders = uint function(uint*,int);
        alias da_GPU_FreeShader = void function(uint);
        alias da_GPU_AttachShader = void function(uint,uint);
        alias da_GPU_DetachShader = void function(uint,uint);
        alias da_GPU_LinkShaderProgram = GPU_bool function(uint);
        alias da_GPU_GetCurrentShaderProgram = uint function();
        alias da_GPU_IsDefaultShaderProgram = GPU_bool function(uint);
        alias da_GPU_ActivateShaderProgram = void function(uint,GPU_ShaderBlock*);
        alias da_GPU_DeactivateShaderProgram = void function();
        alias da_GPU_GetShaderMessage = const(char)* function();
        alias da_GPU_GetAttributeLocation = int function(uint,const(char)*);
        alias da_GPU_MakeAttributeFormat = GPU_AttributeFormat function(int,GPU_TypeEnum,GPU_bool,int,int);
        alias da_GPU_MakeAttribute = GPU_Attribute function(int,void*,GPU_AttributeFormat);
        alias da_GPU_GetUniformLocation = int function(uint,const(char)*);
        alias da_GPU_LoadShaderBlock = GPU_ShaderBlock function(uint,const(char)*,const(char)*,const(char)*,const(char)*);
        alias da_GPU_SetShaderBlock = void function(GPU_ShaderBlock);
        alias da_GPU_GetShaderBlock = GPU_ShaderBlock function();
        alias da_GPU_SetShaderImage = void function(GPU_Image*,int,int);
        alias da_GPU_GetUniformiv = void function(uint,int,int*);
        alias da_GPU_SetUniformi = void function(int,int);
        alias da_GPU_SetUniformiv = void function(int,int,int,int*);
        alias da_GPU_GetUniformuiv = void function(uint,int,uint*);
        alias da_GPU_SetUniformui = void function(int,uint);
        alias da_GPU_SetUniformuiv = void function(int,int,int,uint*);
        alias da_GPU_GetUniformfv = void function(uint,int,float*);
        alias da_GPU_SetUniformf = void function(int,float);
        alias da_GPU_SetUniformfv = void function(int,int,int,float*);
        alias da_GPU_GetUniformMatrixfv = void function(uint,int,float*);
        alias da_GPU_SetUniformMatrixfv = void function(int,int,int,int,GPU_bool,float*);
        alias da_GPU_SetAttributef = void function(int,float);
        alias da_GPU_SetAttributei = void function(int,int);
        alias da_GPU_SetAttributeui = void function(int,uint);
        alias da_GPU_SetAttributefv = void function(int,int,float*);
        alias da_GPU_SetAttributeiv = void function(int,int,int*);
        alias da_GPU_SetAttributeuiv = void function(int,int,uint*);
        alias da_GPU_SetAttributeSource = void function(int,GPU_Attribute);
    }

    __gshared {
        da_GPU_GetLinkedVersion GPU_GetLinkedVersion;
        da_GPU_GetInitWindow GPU_GetInitWindow;
        da_GPU_SetPreInitFlags GPU_SetPreInitFlags;
        da_GPU_GetPreInitFlags GPU_GetPreInitFlags;
        da_GPU_SetRequiredFeatures GPU_SetRequiredFeatures;
        da_GPU_GetRequiredFeatures GPU_GetRequiredFeatures;
        da_GPU_GetDefaultRendererOrder GPU_GetDefaultRendererOrder;
        da_GPU_GetRendererOrder GPU_GetRendererOrder;
        da_GPU_SetRendererOrder GPU_SetRendererOrder;
        da_GPU_Init GPU_Init;
        da_GPU_InitRenderer GPU_InitRenderer;
        da_GPU_InitRendererByID GPU_InitRendererByID;
        da_GPU_IsFeatureEnabled GPU_IsFeatureEnabled;
        da_GPU_CloseCurrentRenderer GPU_CloseCurrentRenderer;
        da_GPU_Quit GPU_Quit;
        da_GPU_SetDebugLevel GPU_SetDebugLevel;
        da_GPU_GetDebugLevel GPU_GetDebugLevel;
        da_GPU_LogInfo GPU_LogInfo;
        da_GPU_LogWarning GPU_LogWarning;
        da_GPU_LogError GPU_LogError;
        da_GPU_SetLogCallback GPU_SetLogCallback;
        da_GPU_PushErrorCode GPU_PushErrorCode;
        da_GPU_PopErrorCode GPU_PopErrorCode;
        da_GPU_GetErrorString GPU_GetErrorString;
        da_GPU_SetErrorQueueMax GPU_SetErrorQueueMax;
        da_GPU_MakeRendererID GPU_MakeRendererID;
        da_GPU_GetRendererID GPU_GetRendererID;
        da_GPU_GetNumRegisteredRenderers GPU_GetNumRegisteredRenderers;
        da_GPU_GetRegisteredRendererList GPU_GetRegisteredRendererList;
        da_GPU_RegisterRenderer GPU_RegisterRenderer;
        da_GPU_ReserveNextRendererEnum GPU_ReserveNextRendererEnum;
        da_GPU_GetNumActiveRenderers GPU_GetNumActiveRenderers;
        da_GPU_GetActiveRendererList GPU_GetActiveRendererList;
        da_GPU_GetCurrentRenderer GPU_GetCurrentRenderer;
        da_GPU_SetCurrentRenderer GPU_SetCurrentRenderer;
        da_GPU_GetRenderer GPU_GetRenderer;
        da_GPU_FreeRenderer GPU_FreeRenderer;
        da_GPU_ResetRendererState GPU_ResetRendererState;
        da_GPU_SetCoordinateMode GPU_SetCoordinateMode;
        da_GPU_GetCoordinateMode GPU_GetCoordinateMode;
        da_GPU_SetDefaultAnchor GPU_SetDefaultAnchor;
        da_GPU_GetDefaultAnchor GPU_GetDefaultAnchor;
        da_GPU_GetContextTarget GPU_GetContextTarget;
        da_GPU_GetWindowTarget GPU_GetWindowTarget;
        da_GPU_CreateTargetFromWindow GPU_CreateTargetFromWindow;
        da_GPU_MakeCurrent GPU_MakeCurrent;
        da_GPU_SetWindowResolution GPU_SetWindowResolution;
        da_GPU_SetFullscreen GPU_SetFullscreen;
        da_GPU_GetFullscreen GPU_GetFullscreen;
        da_GPU_SetShapeBlending GPU_SetShapeBlending;
        da_GPU_GetBlendModeFromPreset GPU_GetBlendModeFromPreset;
        da_GPU_SetShapeBlendFunction GPU_SetShapeBlendFunction;
        da_GPU_SetShapeBlendEquation GPU_SetShapeBlendEquation;
        da_GPU_SetShapeBlendMode GPU_SetShapeBlendMode;
        da_GPU_SetLineThickness GPU_SetLineThickness;
        da_GPU_GetLineThickness GPU_GetLineThickness;
        da_GPU_CreateAliasTarget GPU_CreateAliasTarget;
        da_GPU_LoadTarget GPU_LoadTarget;
        da_GPU_FreeTarget GPU_FreeTarget;
        da_GPU_SetVirtualResolution GPU_SetVirtualResolution;
        da_GPU_GetVirtualResolution GPU_GetVirtualResolution;
        da_GPU_GetVirtualCoords GPU_GetVirtualCoords;
        da_GPU_UnsetVirtualResolution GPU_UnsetVirtualResolution;
        da_GPU_MakeRect GPU_MakeRect;
        da_GPU_MakeColor GPU_MakeColor;
        da_GPU_SetViewport GPU_SetViewport;
        da_GPU_UnsetViewport GPU_UnsetViewport;
        da_GPU_GetDefaultCamera GPU_GetDefaultCamera;
        da_GPU_GetCamera GPU_GetCamera;
        da_GPU_SetCamera GPU_SetCamera;
        da_GPU_EnableCamera GPU_EnableCamera;
        da_GPU_IsCameraEnabled GPU_IsCameraEnabled;
        da_GPU_GetPixel GPU_GetPixel;
        da_GPU_SetClipRect GPU_SetClipRect;
        da_GPU_SetClip GPU_SetClip;
        da_GPU_UnsetClip GPU_UnsetClip;
        da_GPU_IntersectRect GPU_IntersectRect;
        da_GPU_IntersectClipRect GPU_IntersectClipRect;
        da_GPU_SetTargetColor GPU_SetTargetColor;
        da_GPU_SetTargetRGB GPU_SetTargetRGB;
        da_GPU_SetTargetRGBA GPU_SetTargetRGBA;
        da_GPU_UnsetTargetColor GPU_UnsetTargetColor;
        da_GPU_LoadSurface GPU_LoadSurface;
        da_GPU_LoadSurface_RW GPU_LoadSurface_RW;
        da_GPU_SaveSurface GPU_SaveSurface;
        da_GPU_SaveSurface_RW GPU_SaveSurface_RW;
        da_GPU_CreateImage GPU_CreateImage;
        da_GPU_CreateImageUsingTexture GPU_CreateImageUsingTexture;
        da_GPU_LoadImage GPU_LoadImage;
        da_GPU_LoadImage_RW GPU_LoadImage_RW;
        da_GPU_CreateAliasImage GPU_CreateAliasImage;
        da_GPU_CopyImage GPU_CopyImage;
        da_GPU_FreeImage GPU_FreeImage;
        da_GPU_SetImageVirtualResolution GPU_SetImageVirtualResolution;
        da_GPU_UnsetImageVirtualResolution GPU_UnsetImageVirtualResolution;
        da_GPU_UpdateImage GPU_UpdateImage;
        da_GPU_UpdateImageBytes GPU_UpdateImageBytes;
        da_GPU_ReplaceImage GPU_ReplaceImage;
        da_GPU_SaveImage GPU_SaveImage;
        da_GPU_SaveImage_RW GPU_SaveImage_RW;
        da_GPU_GenerateMipmaps GPU_GenerateMipmaps;
        da_GPU_SetColor GPU_SetColor;
        da_GPU_SetRGB GPU_SetRGB;
        da_GPU_SetRGBA GPU_SetRGBA;
        da_GPU_UnsetColor GPU_UnsetColor;
        da_GPU_GetBlending GPU_GetBlending;
        da_GPU_SetBlending GPU_SetBlending;
        da_GPU_SetBlendFunction GPU_SetBlendFunction;
        da_GPU_SetBlendEquation GPU_SetBlendEquation;
        da_GPU_SetBlendMode GPU_SetBlendMode;
        da_GPU_SetImageFilter GPU_SetImageFilter;
        da_GPU_SetAnchor GPU_SetAnchor;
        da_GPU_GetAnchor GPU_GetAnchor;
        da_GPU_GetSnapMode GPU_GetSnapMode;
        da_GPU_SetSnapMode GPU_SetSnapMode;
        da_GPU_SetWrapMode GPU_SetWrapMode;
        da_GPU_CopyImageFromSurface GPU_CopyImageFromSurface;
        da_GPU_CopyImageFromTarget GPU_CopyImageFromTarget;
        da_GPU_CopySurfaceFromTarget GPU_CopySurfaceFromTarget;
        da_GPU_CopySurfaceFromImage GPU_CopySurfaceFromImage;
        da_GPU_VectorLength GPU_VectorLength;
        da_GPU_VectorNormalize GPU_VectorNormalize;
        da_GPU_VectorDot GPU_VectorDot;
        da_GPU_VectorCross GPU_VectorCross;
        da_GPU_VectorCopy GPU_VectorCopy;
        da_GPU_VectorApplyMatrix GPU_VectorApplyMatrix;
        da_GPU_MatrixCopy GPU_MatrixCopy;
        da_GPU_MatrixIdentity GPU_MatrixIdentity;
        da_GPU_MatrixOrtho GPU_MatrixOrtho;
        da_GPU_MatrixFrustum GPU_MatrixFrustum;
        da_GPU_MatrixPerspective GPU_MatrixPerspective;
        da_GPU_MatrixLookAt GPU_MatrixLookAt;
        da_GPU_MatrixTranslate GPU_MatrixTranslate;
        da_GPU_MatrixScale GPU_MatrixScale;
        da_GPU_MatrixRotate GPU_MatrixRotate;
        da_GPU_MatrixMultiply GPU_MatrixMultiply;
        da_GPU_MultiplyAndAssign GPU_MultiplyAndAssign;
        da_GPU_GetMatrixString GPU_GetMatrixString;
        da_GPU_GetCurrentMatrix GPU_GetCurrentMatrix;
        da_GPU_GetModelView GPU_GetModelView;
        da_GPU_GetProjection GPU_GetProjection;
        da_GPU_GetModelViewProjection GPU_GetModelViewProjection;
        da_GPU_MatrixMode GPU_MatrixMode;
        da_GPU_PushMatrix GPU_PushMatrix;
        da_GPU_PopMatrix GPU_PopMatrix;
        da_GPU_LoadIdentity GPU_LoadIdentity;
        da_GPU_Ortho GPU_Ortho;
        da_GPU_Frustum GPU_Frustum;
        da_GPU_Translate GPU_Translate;
        da_GPU_Scale GPU_Scale;
        da_GPU_Rotate GPU_Rotate;
        da_GPU_MultMatrix GPU_MultMatrix;
        da_GPU_Clear GPU_Clear;
        da_GPU_ClearColor GPU_ClearColor;
        da_GPU_ClearRGB GPU_ClearRGB;
        da_GPU_ClearRGBA GPU_ClearRGBA;
        da_GPU_Blit GPU_Blit;
        da_GPU_BlitRotate GPU_BlitRotate;
        da_GPU_BlitScale GPU_BlitScale;
        da_GPU_BlitTransform GPU_BlitTransform;
        da_GPU_BlitTransformX GPU_BlitTransformX;
        da_GPU_BlitRect GPU_BlitRect;
        da_GPU_BlitRectX GPU_BlitRectX;
        da_GPU_TriangleBatch GPU_TriangleBatch;
        da_GPU_TriangleBatchX GPU_TriangleBatchX;
        da_GPU_FlushBlitBuffer GPU_FlushBlitBuffer;
        da_GPU_Flip GPU_Flip;
        da_GPU_Pixel GPU_Pixel;
        da_GPU_Line GPU_Line;
        da_GPU_Arc GPU_Arc;
        da_GPU_ArcFilled GPU_ArcFilled;
        da_GPU_Circle GPU_Circle;
        da_GPU_CircleFilled GPU_CircleFilled;
        da_GPU_Ellipse GPU_Ellipse;
        da_GPU_EllipseFilled GPU_EllipseFilled;
        da_GPU_Sector GPU_Sector;
        da_GPU_SectorFilled GPU_SectorFilled;
        da_GPU_Tri GPU_Tri;
        da_GPU_TriFilled GPU_TriFilled;
        da_GPU_Rectangle GPU_Rectangle;
        da_GPU_Rectangle2 GPU_Rectangle2;
        da_GPU_RectangleFilled GPU_RectangleFilled;
        da_GPU_RectangleFilled2 GPU_RectangleFilled2;
        da_GPU_RectangleRound GPU_RectangleRound;
        da_GPU_RectangleRound2 GPU_RectangleRound2;
        da_GPU_RectangleRoundFilled GPU_RectangleRoundFilled;
        da_GPU_RectangleRoundFilled2 GPU_RectangleRoundFilled2;
        da_GPU_Polygon GPU_Polygon;
        da_GPU_PolygonFilled GPU_PolygonFilled;
        da_GPU_CreateShaderProgram GPU_CreateShaderProgram;
        da_GPU_FreeShaderProgram GPU_FreeShaderProgram;
        da_GPU_CompileShader_RW GPU_CompileShader_RW;
        da_GPU_CompileShader GPU_CompileShader;
        da_GPU_LoadShader GPU_LoadShader;
        da_GPU_LinkShaders GPU_LinkShaders;
        da_GPU_LinkManyShaders GPU_LinkManyShaders;
        da_GPU_FreeShader GPU_FreeShader;
        da_GPU_AttachShader GPU_AttachShader;
        da_GPU_DetachShader GPU_DetachShader;
        da_GPU_LinkShaderProgram GPU_LinkShaderProgram;
        da_GPU_GetCurrentShaderProgram GPU_GetCurrentShaderProgram;
        da_GPU_IsDefaultShaderProgram GPU_IsDefaultShaderProgram;
        da_GPU_ActivateShaderProgram GPU_ActivateShaderProgram;
        da_GPU_DeactivateShaderProgram GPU_DeactivateShaderProgram;
        da_GPU_GetShaderMessage GPU_GetShaderMessage;
        da_GPU_GetAttributeLocation GPU_GetAttributeLocation;
        da_GPU_MakeAttributeFormat GPU_MakeAttributeFormat;
        da_GPU_MakeAttribute GPU_MakeAttribute;
        da_GPU_GetUniformLocation GPU_GetUniformLocation;
        da_GPU_LoadShaderBlock GPU_LoadShaderBlock;
        da_GPU_SetShaderBlock GPU_SetShaderBlock;
        da_GPU_GetShaderBlock GPU_GetShaderBlock;
        da_GPU_SetShaderImage GPU_SetShaderImage;
        da_GPU_GetUniformiv GPU_GetUniformiv;
        da_GPU_SetUniformi GPU_SetUniformi;
        da_GPU_SetUniformiv GPU_SetUniformiv;
        da_GPU_GetUniformuiv GPU_GetUniformuiv;
        da_GPU_SetUniformui GPU_SetUniformui;
        da_GPU_SetUniformuiv GPU_SetUniformuiv;
        da_GPU_GetUniformfv GPU_GetUniformfv;
        da_GPU_SetUniformf GPU_SetUniformf;
        da_GPU_SetUniformfv GPU_SetUniformfv;
        da_GPU_GetUniformMatrixfv GPU_GetUniformMatrixfv;
        da_GPU_SetUniformMatrixfv GPU_SetUniformMatrixfv;
        da_GPU_SetAttributef GPU_SetAttributef;
        da_GPU_SetAttributei GPU_SetAttributei;
        da_GPU_SetAttributeui GPU_SetAttributeui;
        da_GPU_SetAttributefv GPU_SetAttributefv;
        da_GPU_SetAttributeiv GPU_SetAttributeiv;
        da_GPU_SetAttributeuiv GPU_SetAttributeuiv;
        da_GPU_SetAttributeSource GPU_SetAttributeSource;
   }
}