Quellcode durchsuchen

Wrapped more text related functions to improve usage.

Brucey vor 5 Jahren
Ursprung
Commit
05773c890f

+ 7 - 7
examples/learnopengl/1.getting_started/2.2.hello_triangle_indexed.bmx

@@ -85,14 +85,14 @@ glShaderSource (vertexShader, 1, vertexShaderSource)
 glCompileShader (vertexShader)
 glCompileShader (vertexShader)
 
 
 Local success:Int
 Local success:Int
-Local infoLog:Byte [512]
+Local infoLog:String
 
 
 ' check for shader compile errors
 ' check for shader compile errors
 glGetShaderiv (vertexShader, GL_COMPILE_STATUS, Varptr success)
 glGetShaderiv (vertexShader, GL_COMPILE_STATUS, Varptr success)
 
 
 If Not success
 If Not success
-	glGetShaderInfoLog (vertexShader, 512, Null, infoLog)
-	Print "Vertex shader compilation failed: " + String.FromCString (infoLog)
+	infoLog = glGetShaderInfoLog (vertexShader)
+	Print "Vertex shader compilation failed: " + infoLog
 EndIf
 EndIf
 
 
 ' fragment shader
 ' fragment shader
@@ -105,8 +105,8 @@ glCompileShader (fragmentShader)
 glGetShaderiv (fragmentShader, GL_COMPILE_STATUS, Varptr success)
 glGetShaderiv (fragmentShader, GL_COMPILE_STATUS, Varptr success)
 
 
 If Not success
 If Not success
-	glGetShaderInfoLog (fragmentShader, 512, Null, infoLog)
-	Print "Fragment shader compilation failed: " + String.FromCString (infoLog)
+	infoLog = glGetShaderInfoLog (fragmentShader)
+	Print "Fragment shader compilation failed: " + infoLog
 EndIf
 EndIf
 
 
 ' link shaders
 ' link shaders
@@ -119,8 +119,8 @@ glLinkProgram (shaderProgram)
 glGetProgramiv (shaderProgram, GL_LINK_STATUS, Varptr success)
 glGetProgramiv (shaderProgram, GL_LINK_STATUS, Varptr success)
 
 
 If Not success
 If Not success
-	glGetProgramInfoLog (shaderProgram, 512, Null, infoLog)
-	Print "Shader program linking failed: " + String.FromCString (infoLog)
+	infoLog = glGetProgramInfoLog (shaderProgram)
+	Print "Shader program linking failed: " + infoLog
 EndIf
 EndIf
 
 
 glDeleteShader (vertexShader)
 glDeleteShader (vertexShader)

+ 7 - 7
examples/learnopengl/1.getting_started/3.1_shaders_uniform.bmx

@@ -80,13 +80,13 @@ glShaderSource (vertexShader, 1, vertexShaderSource)
 glCompileShader (vertexShader)
 glCompileShader (vertexShader)
 
 
 Local success:Int
 Local success:Int
-Local infoLog:Byte [512]
+Local infoLog:String
 
 
 glGetShaderiv (vertexShader, GL_COMPILE_STATUS, Varptr success)
 glGetShaderiv (vertexShader, GL_COMPILE_STATUS, Varptr success)
 
 
 If Not success
 If Not success
-	glGetShaderInfoLog (vertexShader, 512, Null, infoLog)
-	Print "Vertex shader compilation failed: " + String.FromCString (infoLog)
+	infoLog = glGetShaderInfoLog (vertexShader)
+	Print "Vertex shader compilation failed: " + infoLog
 EndIf
 EndIf
 
 
 Local fragmentShader:Int = glCreateShader (GL_FRAGMENT_SHADER)
 Local fragmentShader:Int = glCreateShader (GL_FRAGMENT_SHADER)
@@ -97,8 +97,8 @@ glCompileShader (fragmentShader)
 glGetShaderiv (fragmentShader, GL_COMPILE_STATUS, Varptr success)
 glGetShaderiv (fragmentShader, GL_COMPILE_STATUS, Varptr success)
 
 
 If Not success
 If Not success
-	glGetShaderInfoLog (fragmentShader, 512, Null, infoLog)
-	Print "Fragment shader compilation failed: " + String.FromCString (infoLog)
+	infoLog = glGetShaderInfoLog (fragmentShader)
+	Print "Fragment shader compilation failed: " + infoLog
 EndIf
 EndIf
 
 
 ' link shaders
 ' link shaders
@@ -111,8 +111,8 @@ glLinkProgram (shaderProgram)
 glGetProgramiv (shaderProgram, GL_LINK_STATUS, Varptr success)
 glGetProgramiv (shaderProgram, GL_LINK_STATUS, Varptr success)
 
 
 If Not success
 If Not success
-	glGetProgramInfoLog (shaderProgram, 512, Null, infoLog)
-	Print "Shader program linking failed: " + String.FromCString (infoLog)
+	infoLog = glGetProgramInfoLog (shaderProgram)
+	Print "Shader program linking failed: " + infoLog
 EndIf
 EndIf
 
 
 glDeleteShader (vertexShader)
 glDeleteShader (vertexShader)

+ 191 - 0
examples/learnopengl/1.getting_started/3.2.shaders_interpolation.bmx

@@ -0,0 +1,191 @@
+' https://learnopengl.com/
+
+SuperStrict
+
+Framework GLFW.GLFWWindow
+
+Import GLFW.GLFW
+Import GLFW.GLFWOpenGL
+Import GLFW.GLFWSystem
+
+Import BRL.StandardIO
+
+Local app_name:String = "Shaders Interpolation"
+
+Const SCR_WIDTH:UInt	= 800
+Const SCR_HEIGHT:UInt	= 600
+
+Type TGameWindow Extends TGLFWWindow
+	
+	' whenever the window size changed (by OS or user resize) this callback method executes
+	Method OnFrameBufferSize (width:Int, height:Int)
+		' make sure the viewport matches the new window dimensions; note that width and 
+		' height will be significantly larger than specified on retina displays.
+		glViewport (0, 0, width, height)
+	EndMethod
+	
+EndType
+
+' process all input: query GLFW whether relevant keys are pressed/released this frame and react accordingly
+Function ProcessInput (window:TGLFWWindow)
+	
+	If window.IsKeyDown (GLFW_KEY_ESCAPE)
+		window.SetShouldClose (True)
+	EndIf
+	
+EndFunction
+
+' glfw: initialize and configure
+TGLFWWindow.Hint (GLFW_CONTEXT_VERSION_MAJOR, 3)
+TGLFWWindow.Hint (GLFW_CONTEXT_VERSION_MINOR, 3)
+TGLFWWindow.Hint (GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE)
+
+?MacOS ' Ewww...
+	TGLFWWindow.Hint (GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE)
+?
+
+' glfw window creation
+Local window:TGLFWWindow = New TGameWindow.Create (SCR_WIDTH, SCR_HEIGHT, app_name)
+
+If Not window
+	Print "Failed to create GLFW window!"
+	End
+EndIf
+
+window.MakeContextCurrent ()
+
+' glad: load all OpenGL function pointers
+gladLoadGL (glfwGetProcAddress)
+
+' build and compile our shader program
+
+Local vertexShaderSource:String
+
+vertexShaderSource :+ "#version 330 core~n"
+vertexShaderSource :+ "layout (location = 0) in vec3 aPos;~n"
+vertexShaderSource :+ "layout (location = 1) in vec3 aColor;~n"
+vertexShaderSource :+ "out vec3 ourColor;~n"
+vertexShaderSource :+ "void main()~n"
+vertexShaderSource :+ "{~n"
+vertexShaderSource :+ "   gl_Position = vec4(aPos, 1.0);~n"
+vertexShaderSource :+ "   ourColor = aColor;~n"
+vertexShaderSource :+ "}~n"
+
+' vertex shader
+Local vertexShader:Int = glCreateShader (GL_VERTEX_SHADER)
+
+glShaderSource (vertexShader, 1, vertexShaderSource)
+glCompileShader (vertexShader)
+
+Local success:Int
+Local infoLog:String
+
+glGetShaderiv (vertexShader, GL_COMPILE_STATUS, Varptr success)
+
+If Not success
+	infoLog = glGetShaderInfoLog(vertexShader)
+	Print "Vertex shader compilation failed: " + infoLog
+EndIf
+
+Local fragmentShaderSource:String
+
+fragmentShaderSource :+ "#version 330 core~n"
+fragmentShaderSource :+ "out vec4 FragColor;~n"
+fragmentShaderSource :+ "in vec3 ourColor;~n"
+fragmentShaderSource :+ "void main()~n"
+fragmentShaderSource :+ "{~n"
+fragmentShaderSource :+ "   FragColor = vec4(ourColor, 1.0f);~n"
+fragmentShaderSource :+ "}~n"
+
+' fragment shader
+Local fragmentShader:Int = glCreateShader (GL_FRAGMENT_SHADER)
+
+glShaderSource (fragmentShader, 1, fragmentShaderSource)
+glCompileShader (fragmentShader)
+
+' check for shader compile errors
+glGetShaderiv (fragmentShader, GL_COMPILE_STATUS, Varptr success)
+
+If Not success
+	infoLog = glGetShaderInfoLog(fragmentShader)
+	Print "Fragment shader compilation failed: " + infoLog
+EndIf
+
+' link shaders
+Local shaderProgram:Int = glCreateProgram ()
+
+glAttachShader (shaderProgram, vertexShader)
+glAttachShader (shaderProgram, fragmentShader)
+
+glLinkProgram (shaderProgram)
+
+' check for linking errors
+glGetProgramiv (shaderProgram, GL_LINK_STATUS, Varptr success)
+
+If Not success
+	infoLog = glGetProgramInfoLog (shaderProgram)
+	Print "Shader program linking failed: " + infoLog
+EndIf
+
+glDeleteShader (vertexShader)
+glDeleteShader (fragmentShader)
+
+' set up vertex data (and buffer(s)) and configure vertex attributes
+Local vertices:Float [] = [..
+	0.5, -0.5, 0.0, 1.0, 0.0, 0.0, ..
+	-0.5, -0.5, 0.0, 0.0, 1.0, 0.0, ..
+	0.0, 0.5, 0.0, 0.0, 0.0, 1.0]
+
+Local VBO:UInt
+Local VAO:UInt
+
+glGenVertexArrays (1, Varptr VAO)
+glGenBuffers (1, Varptr VBO)
+
+' bind the Vertex Array Object first, then bind and set vertex buffer(s), and then configure vertex attributes(s).
+glBindVertexArray (VAO)
+
+glBindBuffer (GL_ARRAY_BUFFER, VBO)
+glBufferData (GL_ARRAY_BUFFER, vertices.length * SizeOf (0:Float), vertices, GL_STATIC_DRAW)
+
+' position attribute
+glVertexAttribPointer (0, 3, GL_FLOAT, GL_FALSE, 6 * SizeOf (0:Float), 0:Byte Ptr)
+glEnableVertexAttribArray (0)
+
+Local attribute_offset:Int = 3 * SizeOf (0:Float)
+
+' color attribute
+glVertexAttribPointer (1, 3, GL_FLOAT, GL_FALSE, 6 * SizeOf (0:Float), Byte Ptr (attribute_offset))
+glEnableVertexAttribArray (1)
+
+' as we only have a single shader, we could also just activate our shader once beforehand if we want to 
+glUseProgram (shaderProgram)
+
+' render loop
+' -----------
+While Not window.ShouldClose ()
+	
+	' input
+	' -----
+	ProcessInput (window)
+
+	' render
+	' ------
+	glClearColor (0.2, 0.3, 0.3, 1.0)
+	glClear (GL_COLOR_BUFFER_BIT)
+	
+	' render the triangle
+	glBindVertexArray (VAO)
+	glDrawArrays (GL_TRIANGLES, 0, 3)
+
+	' glfw: swap buffers and poll IO events (keys pressed/released, mouse moved etc.)
+	window.SwapBuffers ()
+	PollSystem ()
+	
+Wend
+
+' optional: de-allocate all resources once they've outlived their purpose
+glDeleteVertexArrays (1, Varptr VAO)
+glDeleteBuffers (1, Varptr VBO)
+
+End

+ 37 - 2
glfwopengl.mod/g2bmx.bmx

@@ -207,7 +207,7 @@ Type TCodeGenerator
 								Local val:Tproto=Tproto( funMap.ValueForKey( key ) )
 								Local val:Tproto=Tproto( funMap.ValueForKey( key ) )
 								If val
 								If val
 									Local prefix:String
 									Local prefix:String
-									If id = "glShaderSource" prefix = "_"
+									If (id = "glShaderSource" Or id = "glGetShaderInfoLog" Or id = "glGetProgramInfoLog" Or id = "glGetShaderSource" Or id = "glGetUniformLocation") prefix = "_"
 									GenerateApi ( "Global "+prefix+id+val.proto+"=~q"+val.exproto.Replace("XXXXXXXX", sym).Trim()+"~q", "GL Global "+id+val.proto )
 									GenerateApi ( "Global "+prefix+id+val.proto+"=~q"+val.exproto.Replace("XXXXXXXX", sym).Trim()+"~q", "GL Global "+id+val.proto )
 								Else
 								Else
 									DebugLog "***** "+sym+" *****"
 									DebugLog "***** "+sym+" *****"
@@ -474,7 +474,42 @@ Type TCodeGenerator
 		WriteLine OutGlad, "~t_glShaderSource(shader_, count_, Varptr s, Null)"
 		WriteLine OutGlad, "~t_glShaderSource(shader_, count_, Varptr s, Null)"
 		WriteLine OutGlad, "~tMemFree s"
 		WriteLine OutGlad, "~tMemFree s"
 		WriteLine OutGlad, "End Function"
 		WriteLine OutGlad, "End Function"
-		
+
+		WriteLine OutGlad, ""
+		WriteLine OutGlad, "Function glGetShaderInfoLog:String(shader:Int)"
+		WriteLine OutGlad, "~tLocal buf:Byte[2048]"
+		WriteLine OutGlad, "~tLocal length:Int"
+		WriteLine OutGlad, "~t_glGetShaderInfoLog(shader, 2048, Null, buf)"
+		WriteLine OutGlad, "~tReturn String.FromUTF8String(buf)"
+		WriteLine OutGlad, "End Function"
+
+		WriteLine OutGlad, ""
+		WriteLine OutGlad, "Function glGetProgramInfoLog:String(program:Int)"
+		WriteLine OutGlad, "~tLocal buf:Byte[2048]"
+		WriteLine OutGlad, "~tLocal length:Int"
+		WriteLine OutGlad, "~t_glGetShaderInfoLog(program, 2048, Null, buf)"
+		WriteLine OutGlad, "~tReturn String.FromUTF8String(buf)"
+		WriteLine OutGlad, "End Function"
+
+		WriteLine OutGlad, ""
+		WriteLine OutGlad, "Function glGetShaderSource:String(shader:Int)"
+		WriteLine OutGlad, "~tLocal length:Int"
+		WriteLine OutGlad, "~tglGetShaderiv(shader, GL_SHADER_SOURCE_LENGTH, Varptr length)"
+		WriteLine OutGlad, "~tIf length Then"
+		WriteLine OutGlad, "~tLocal buf:Byte[length + 1]"
+		WriteLine OutGlad, "~t_glGetShaderSource(shader, length + 1, Null, buf)"
+		WriteLine OutGlad, "~tReturn String.FromUTF8String(buf)"
+		WriteLine OutGlad, "~tEnd If"
+		WriteLine OutGlad, "End Function"
+
+		WriteLine OutGlad, ""
+		WriteLine OutGlad, "Function glGetUniformLocation(program:Int, name:String)"
+		WriteLine OutGlad, "~tLocal n:Byte Ptr = name.ToUTF8String()"
+		WriteLine OutGlad, "~tLocal res:Int = _glGetUniformLocation(program, n)"
+		WriteLine OutGlad, "~tMemFree(n)"
+		WriteLine OutGlad, "~tReturn res"
+		WriteLine OutGlad, "End Function"
+
 		'WriteLine OutGlad, "?"
 		'WriteLine OutGlad, "?"
 		
 		
 		OutGlad.Close
 		OutGlad.Close

+ 1 - 1
glfwopengl.mod/glad00.bmx

@@ -1,6 +1,6 @@
 '
 '
 ' NOTE : Generated file. Do not edit. Your changes may be lost on the next update!
 ' NOTE : Generated file. Do not edit. Your changes may be lost on the next update!
-'        Generated by g2bmx on 18 Mar 2020
+'        Generated by g2bmx on 21 Mar 2020
 '
 '
 Strict
 Strict
 
 

+ 32 - 1
glfwopengl.mod/glfwopengl.bmx

@@ -1,6 +1,6 @@
 '
 '
 ' NOTE : Generated file. Do not edit. Your changes may be lost on the next update!
 ' NOTE : Generated file. Do not edit. Your changes may be lost on the next update!
-'        Generated by g2bmx on 18 Mar 2020
+'        Generated by g2bmx on 21 Mar 2020
 '
 '
 Strict
 Strict
 
 
@@ -24,3 +24,34 @@ Function glShaderSource(shader_:Int,count_:Int,source:String)
 	_glShaderSource(shader_, count_, Varptr s, Null)
 	_glShaderSource(shader_, count_, Varptr s, Null)
 	MemFree s
 	MemFree s
 End Function
 End Function
+
+Function glGetShaderInfoLog:String(shader:Int)
+	Local buf:Byte[2048]
+	Local length:Int
+	_glGetShaderInfoLog(shader, 2048, Null, buf)
+	Return String.FromUTF8String(buf)
+End Function
+
+Function glGetProgramInfoLog:String(program:Int)
+	Local buf:Byte[2048]
+	Local length:Int
+	_glGetShaderInfoLog(program, 2048, Null, buf)
+	Return String.FromUTF8String(buf)
+End Function
+
+Function glGetShaderSource:String(shader:Int)
+	Local length:Int
+	glGetShaderiv(shader, GL_SHADER_SOURCE_LENGTH, Varptr length)
+	If length Then
+	Local buf:Byte[length + 1]
+	_glGetShaderSource(shader, length + 1, Null, buf)
+	Return String.FromUTF8String(buf)
+	End If
+End Function
+
+Function glGetUniformLocation(program:Int, name:String)
+	Local n:Byte Ptr = name.ToUTF8String()
+	Local res:Int = _glGetUniformLocation(program, n)
+	MemFree(n)
+	Return res
+End Function

+ 5 - 5
glfwopengl.mod/opengl.bmx

@@ -1,6 +1,6 @@
 '
 '
 ' NOTE : Generated file. Do not edit. Your changes may be lost on the next update!
 ' NOTE : Generated file. Do not edit. Your changes may be lost on the next update!
-'        Generated by g2bmx on 18 Mar 2020
+'        Generated by g2bmx on 21 Mar 2020
 '
 '
 Strict
 Strict
 
 
@@ -1547,7 +1547,7 @@ Global glGetPixelMapuiv(map_:Int,values_:Int Ptr)="void glad_glGetPixelMapuiv( G
 Global glGetPixelMapusv(map_:Int,values_:Short Ptr)="void glad_glGetPixelMapusv( GLenum, GLushort*)!"
 Global glGetPixelMapusv(map_:Int,values_:Short Ptr)="void glad_glGetPixelMapusv( GLenum, GLushort*)!"
 Global glGetPointerv(pname_:Int,params_:Byte Ptr Ptr)="void glad_glGetPointerv( GLenum, void**)!"
 Global glGetPointerv(pname_:Int,params_:Byte Ptr Ptr)="void glad_glGetPointerv( GLenum, void**)!"
 Global glGetPolygonStipple(mask_:Byte Ptr)="void glad_glGetPolygonStipple( GLubyte*)!"
 Global glGetPolygonStipple(mask_:Byte Ptr)="void glad_glGetPolygonStipple( GLubyte*)!"
-Global glGetProgramInfoLog(program_:Int,bufSize_:Int,length_:Int Ptr,infoLog_:Byte Ptr)="void glad_glGetProgramInfoLog( GLuint, GLsizei, GLsizei*, GLchar*)!"
+Global _glGetProgramInfoLog(program_:Int,bufSize_:Int,length_:Int Ptr,infoLog_:Byte Ptr)="void glad_glGetProgramInfoLog( GLuint, GLsizei, GLsizei*, GLchar*)!"
 Global glGetProgramiv(program_:Int,pname_:Int,params_:Int Ptr)="void glad_glGetProgramiv( GLuint, GLenum, GLint*)!"
 Global glGetProgramiv(program_:Int,pname_:Int,params_:Int Ptr)="void glad_glGetProgramiv( GLuint, GLenum, GLint*)!"
 Global glGetQueryObjecti64v(id_:Int,pname_:Int,params_:Long Ptr)="void glad_glGetQueryObjecti64v( GLuint, GLenum, GLint64*)!"
 Global glGetQueryObjecti64v(id_:Int,pname_:Int,params_:Long Ptr)="void glad_glGetQueryObjecti64v( GLuint, GLenum, GLint64*)!"
 Global glGetQueryObjectiv(id_:Int,pname_:Int,params_:Int Ptr)="void glad_glGetQueryObjectiv( GLuint, GLenum, GLint*)!"
 Global glGetQueryObjectiv(id_:Int,pname_:Int,params_:Int Ptr)="void glad_glGetQueryObjectiv( GLuint, GLenum, GLint*)!"
@@ -1559,8 +1559,8 @@ Global glGetSamplerParameterIiv(sampler_:Int,pname_:Int,params_:Int Ptr)="void g
 Global glGetSamplerParameterIuiv(sampler_:Int,pname_:Int,params_:Int Ptr)="void glad_glGetSamplerParameterIuiv( GLuint, GLenum, GLuint*)!"
 Global glGetSamplerParameterIuiv(sampler_:Int,pname_:Int,params_:Int Ptr)="void glad_glGetSamplerParameterIuiv( GLuint, GLenum, GLuint*)!"
 Global glGetSamplerParameterfv(sampler_:Int,pname_:Int,params_:Float Ptr)="void glad_glGetSamplerParameterfv( GLuint, GLenum, GLfloat*)!"
 Global glGetSamplerParameterfv(sampler_:Int,pname_:Int,params_:Float Ptr)="void glad_glGetSamplerParameterfv( GLuint, GLenum, GLfloat*)!"
 Global glGetSamplerParameteriv(sampler_:Int,pname_:Int,params_:Int Ptr)="void glad_glGetSamplerParameteriv( GLuint, GLenum, GLint*)!"
 Global glGetSamplerParameteriv(sampler_:Int,pname_:Int,params_:Int Ptr)="void glad_glGetSamplerParameteriv( GLuint, GLenum, GLint*)!"
-Global glGetShaderInfoLog(shader_:Int,bufSize_:Int,length_:Int Ptr,infoLog_:Byte Ptr)="void glad_glGetShaderInfoLog( GLuint, GLsizei, GLsizei*, GLchar*)!"
-Global glGetShaderSource(shader_:Int,bufSize_:Int,length_:Int Ptr,source_:Byte Ptr)="void glad_glGetShaderSource( GLuint, GLsizei, GLsizei*, GLchar*)!"
+Global _glGetShaderInfoLog(shader_:Int,bufSize_:Int,length_:Int Ptr,infoLog_:Byte Ptr)="void glad_glGetShaderInfoLog( GLuint, GLsizei, GLsizei*, GLchar*)!"
+Global _glGetShaderSource(shader_:Int,bufSize_:Int,length_:Int Ptr,source_:Byte Ptr)="void glad_glGetShaderSource( GLuint, GLsizei, GLsizei*, GLchar*)!"
 Global glGetShaderiv(shader_:Int,pname_:Int,params_:Int Ptr)="void glad_glGetShaderiv( GLuint, GLenum, GLint*)!"
 Global glGetShaderiv(shader_:Int,pname_:Int,params_:Int Ptr)="void glad_glGetShaderiv( GLuint, GLenum, GLint*)!"
 Global glGetString:Byte Ptr(name_:Int)="const GLubyte* glad_glGetString( GLenum)!"
 Global glGetString:Byte Ptr(name_:Int)="const GLubyte* glad_glGetString( GLenum)!"
 Global glGetStringi:Byte Ptr(name_:Int,index_:Int)="const GLubyte* glad_glGetStringi( GLenum, GLuint)!"
 Global glGetStringi:Byte Ptr(name_:Int,index_:Int)="const GLubyte* glad_glGetStringi( GLenum, GLuint)!"
@@ -1579,7 +1579,7 @@ Global glGetTexParameteriv(target_:Int,pname_:Int,params_:Int Ptr)="void glad_gl
 Global glGetTransformFeedbackVarying(program_:Int,index_:Int,bufSize_:Int,length_:Int Ptr,size_:Int Ptr,type_:Int Ptr,name_:Byte Ptr)="void glad_glGetTransformFeedbackVarying( GLuint, GLuint, GLsizei, GLsizei*, GLsizei*, GLenum*, GLchar*)!"
 Global glGetTransformFeedbackVarying(program_:Int,index_:Int,bufSize_:Int,length_:Int Ptr,size_:Int Ptr,type_:Int Ptr,name_:Byte Ptr)="void glad_glGetTransformFeedbackVarying( GLuint, GLuint, GLsizei, GLsizei*, GLsizei*, GLenum*, GLchar*)!"
 Global glGetUniformBlockIndex:Int(program_:Int,uniformBlockName_:Byte Ptr)="GLuint glad_glGetUniformBlockIndex( GLuint,const GLchar*)!"
 Global glGetUniformBlockIndex:Int(program_:Int,uniformBlockName_:Byte Ptr)="GLuint glad_glGetUniformBlockIndex( GLuint,const GLchar*)!"
 Global glGetUniformIndices(program_:Int,uniformCount_:Int,uniformNames_:Byte Ptr Ptr,uniformIndices_:Int Ptr)="void glad_glGetUniformIndices( GLuint, GLsizei,const GLchar* const*, GLuint*)!"
 Global glGetUniformIndices(program_:Int,uniformCount_:Int,uniformNames_:Byte Ptr Ptr,uniformIndices_:Int Ptr)="void glad_glGetUniformIndices( GLuint, GLsizei,const GLchar* const*, GLuint*)!"
-Global glGetUniformLocation:Int(program_:Int,name_:Byte Ptr)="GLint glad_glGetUniformLocation( GLuint,const GLchar*)!"
+Global _glGetUniformLocation:Int(program_:Int,name_:Byte Ptr)="GLint glad_glGetUniformLocation( GLuint,const GLchar*)!"
 Global glGetUniformfv(program_:Int,location_:Int,params_:Float Ptr)="void glad_glGetUniformfv( GLuint, GLint, GLfloat*)!"
 Global glGetUniformfv(program_:Int,location_:Int,params_:Float Ptr)="void glad_glGetUniformfv( GLuint, GLint, GLfloat*)!"
 Global glGetUniformiv(program_:Int,location_:Int,params_:Int Ptr)="void glad_glGetUniformiv( GLuint, GLint, GLint*)!"
 Global glGetUniformiv(program_:Int,location_:Int,params_:Int Ptr)="void glad_glGetUniformiv( GLuint, GLint, GLint*)!"
 Global glGetUniformuiv(program_:Int,location_:Int,params_:Int Ptr)="void glad_glGetUniformuiv( GLuint, GLint, GLuint*)!"
 Global glGetUniformuiv(program_:Int,location_:Int,params_:Int Ptr)="void glad_glGetUniformuiv( GLuint, GLint, GLuint*)!"