func (g *context) BufferData(target uint32, size int, data unsafe.Pointer, usage uint32) {
	g.run(func() {
		gl.BufferData(target, size, data, usage)
	})
}
BufferData creates and initializes a buffer object's data store
package glfw
import (
	"unsafe"
	"github.com/go-gl/gl/v3.3-core/gl"
	"github.com/go-gl/glfw/v3.3/glfw"
)
type context struct {
	run      func(func())
	runAsync func(func())
}
func newContext(mainThreadLoop *MainThreadLoop, window *glfw.Window) *context {
	return &context{
		run: func(f func()) {
			mainThreadLoop.executeCommand(command{
				window:  window,
				execute: f,
			})
		},
		runAsync: func(f func()) {
			mainThreadLoop.executeAsyncCommand(command{
				window:  window,
				execute: f,
			})
		},
	}
}
func (g *context) GenBuffers(n int32, buffers *uint32) {
	g.run(func() {
		gl.GenBuffers(n, buffers)
	})
}
func (g *context) BindBuffer(target uint32, buffer uint32) {
	g.runAsync(func() {
		gl.BindBuffer(target, buffer)
	})
}