github.com/gotranspile/cxgo@v0.3.8-0.20240118201721-29871598a6a2/libs/opengl.go (about)

     1  package libs
     2  
     3  import "github.com/gotranspile/cxgo/types"
     4  
     5  const (
     6  	glH = "GL/gl.h"
     7  )
     8  
     9  func init() {
    10  	RegisterLibrary(glH, func(env *Env) *Library {
    11  		int32T := types.IntT(4)
    12  		uint32T := types.UintT(4)
    13  		intT := env.Go().Int()
    14  		uint32PtrT := env.PtrT(types.UintT(4))
    15  		uPtrT := env.Go().UnsafePtr()
    16  		float32T := env.PtrT(types.FloatT(4))
    17  		return &Library{
    18  			Imports: map[string]string{
    19  				"gl": "github.com/go-gl/gl/v3.3-core/gl", // last supported version on macos
    20  			},
    21  			Idents: map[string]*types.Ident{
    22  				//functions
    23  				"glGenBuffers":              types.NewIdentGo("glGenBuffers", "gl.GenBuffers", env.FuncTT(nil, int32T, uint32PtrT)),
    24  				"glBindBuffer":              types.NewIdentGo("glBindBuffer", "gl.BindBuffer", env.FuncTT(nil, uint32T, uint32T)),
    25  				"glBufferData":              types.NewIdentGo("glBufferData", "gl.BufferData", env.FuncTT(nil, uint32T, intT, uPtrT, uint32T)),
    26  				"glCreateShader":            types.NewIdentGo("glCreateShader", "gl.CreateShader", env.FuncTT(uint32T, uint32T)),
    27  				"glShaderSource":            types.NewIdentGo("glShaderSource", "gl.ShaderSource", env.FuncTT(nil, uint32T, int32T, env.PtrT(env.C().String()), env.PtrT(int32T))),
    28  				"glCompileShader":           types.NewIdentGo("glCompileShader", "gl.CompileShader", env.FuncTT(nil, uint32T)),
    29  				"glCreateProgram":           types.NewIdentGo("glCreateProgram", "gl.CreateProgram", env.FuncTT(uint32T)),
    30  				"glAttachShader":            types.NewIdentGo("glAttachShader", "gl.AttachShader", env.FuncTT(nil, uint32T, uint32T)),
    31  				"glLinkProgram":             types.NewIdentGo("glLinkProgram", "gl.LinkProgram", env.FuncTT(nil, uint32T)),
    32  				"glGetUniformLocation":      types.NewIdentGo("glGetUniformLocation", "gl.GetUniformLocation", env.FuncTT(int32T, uint32T, env.C().String())),
    33  				"glGetAttribLocation":       types.NewIdentGo("glGetAttribLocation", "gl.GetAttribLocation", env.FuncTT(int32T, uint32T, env.C().String())),
    34  				"glEnableVertexAttribArray": types.NewIdentGo("glEnableVertexAttribArray", "gl.EnableVertexAttribArray", env.FuncTT(nil, uint32T)),
    35  				"glVertexAttribPointer":     types.NewIdentGo("glVertexAttribPointer", "gl.VertexAttribPointerWithOffset", env.FuncTT(nil, uint32T, int32T, uint32T, env.Go().Bool(), int32T, env.Go().Uintptr())),
    36  				"glViewport":                types.NewIdentGo("glViewport", "gl.Viewport", env.FuncTT(nil, int32T, int32T, int32T, int32T)),
    37  				"glClear":                   types.NewIdentGo("glClear", "gl.Clear", env.FuncTT(nil, uint32T)),
    38  				"glUseProgram":              types.NewIdentGo("glUseProgram", "gl.UseProgram", env.FuncTT(nil, uint32T)),
    39  				"glUniformMatrix4fv":        types.NewIdentGo("glUniformMatrix4fv", "gl.UniformMatrix4fv", env.FuncTT(nil, int32T, int32T, env.Go().Bool(), float32T)),
    40  				"glDrawArrays":              types.NewIdentGo("glDrawArrays", "gl.DrawArrays", env.FuncTT(nil, uint32T, int32T, int32T)),
    41  				// constants
    42  				"GL_FALSE":                      types.NewIdentGo("GL_FALSE", "gl.FALSE", env.Go().Int()),
    43  				"GL_TRUE":                       types.NewIdentGo("GL_TRUE", "gl.TRUE", env.Go().Int()),
    44  				"GL_TEXTURE_2D":                 types.NewIdentGo("GL_TEXTURE_2D", "gl.TEXTURE_2D", env.Go().Int()),
    45  				"GL_UNPACK_ROW_LENGTH":          types.NewIdentGo("GL_UNPACK_ROW_LENGTH", "gl.UNPACK_ROW_LENGTH", env.Go().Int()),
    46  				"GL_BGRA":                       types.NewIdentGo("GL_BGRA", "gl.BGRA", env.Go().Int()),
    47  				"GL_RGBA":                       types.NewIdentGo("GL_RGBA", "gl.RGBA", env.Go().Int()),
    48  				"GL_TEXTURE_WRAP_S":             types.NewIdentGo("GL_TEXTURE_WRAP_S", "gl.TEXTURE_WRAP_S", env.Go().Int()),
    49  				"GL_TEXTURE_WRAP_T":             types.NewIdentGo("GL_TEXTURE_WRAP_T", "gl.TEXTURE_WRAP_T", env.Go().Int()),
    50  				"GL_TEXTURE_MIN_FILTER":         types.NewIdentGo("GL_TEXTURE_MIN_FILTER", "gl.TEXTURE_MIN_FILTER", env.Go().Int()),
    51  				"GL_FRAMEBUFFER":                types.NewIdentGo("GL_FRAMEBUFFER", "gl.FRAMEBUFFER", env.Go().Int()),
    52  				"GL_COLOR_BUFFER_BIT":           types.NewIdentGo("GL_COLOR_BUFFER_BIT", "gl.COLOR_BUFFER_BIT", env.Go().Int()),
    53  				"GL_UNSIGNED_SHORT_1_5_5_5_REV": types.NewIdentGo("GL_UNSIGNED_SHORT_1_5_5_5_REV", "gl.UNSIGNED_SHORT_1_5_5_5_REV", env.Go().Int()),
    54  				"GL_UNSIGNED_SHORT_5_5_5_1":     types.NewIdentGo("GL_UNSIGNED_SHORT_5_5_5_1", "gl.UNSIGNED_SHORT_5_5_5_1", env.Go().Int()),
    55  				"GL_LINEAR":                     types.NewIdentGo("GL_LINEAR", "gl.LINEAR", env.Go().Int()),
    56  				"GL_ARRAY_BUFFER":               types.NewIdentGo("GL_ARRAY_BUFFER", "gl.ARRAY_BUFFER", env.Go().Int()),
    57  				"GL_FLOAT":                      types.NewIdentGo("GL_FLOAT", "gl.FLOAT", env.Go().Int()),
    58  				"GL_TRIANGLE_STRIP":             types.NewIdentGo("GL_TRIANGLE_STRIP", "gl.TRIANGLE_STRIP", env.Go().Int()),
    59  				"GL_CLAMP_TO_EDGE":              types.NewIdentGo("GL_CLAMP_TO_EDGE", "gl.CLAMP_TO_EDGE", env.Go().Int()),
    60  				"GL_TEXTURE0":                   types.NewIdentGo("GL_TEXTURE0", "gl.TEXTURE0", env.Go().Int()),
    61  				"GL_VERTEX_SHADER":              types.NewIdentGo("GL_VERTEX_SHADER", "gl.VERTEX_SHADER", env.Go().Int()),
    62  				"GL_COMPILE_STATUS":             types.NewIdentGo("GL_COMPILE_STATUS", "gl.COMPILE_STATUS", env.Go().Int()),
    63  				"GL_FRAGMENT_SHADER":            types.NewIdentGo("GL_FRAGMENT_SHADER", "gl.FRAGMENT_SHADER", env.Go().Int()),
    64  				"GL_LINK_STATUS":                types.NewIdentGo("GL_LINK_STATUS", "gl.LINK_STATUS", env.Go().Int()),
    65  				"GL_STATIC_DRAW":                types.NewIdentGo("GL_STATIC_DRAW", "gl.STATIC_DRAW", env.Go().Int()),
    66  				"GL_TRIANGLES":                  types.NewIdentGo("GL_TRIANGLES", "gl.TRIANGLES", env.Go().Int()),
    67  			},
    68  		}
    69  	})
    70  }