gl | OpenGL Bindings for golang =============================== You will need [GLEW](http://glew.sourceforge.net/) at least version 1.5.4. Once GLEW is installed, you can install this package with `go get`: go get github.com/go-gl-legacy/gl Contact / discussion mailing list --------------------------------- The discussion is hosted on [google groups](https://groups.google.com/forum/#!forum/go-gl). We can also be found periodically on IRC, [#go-gl on freenode](http://webchat.freenode.net/?randomnick=1&channels=go-gl&prompt=1). Documentation and examples -------------------------- Autogenerated documentation can be found on [godoc.org](http://godoc.org/github.com/go-gl-legacy/gl), and the more thorough [official GL SDK documentation](http://www.opengl.org/sdk/docs/man/xhtml/) applies. Examples can be found in our [examples repository](https://github.com/go-gl/examples). # More libraries: Easy windowing, meshes, text rendering, etc: * [GLFW bindings](https://github.com/go-gl/glfw) for easy windowing, input etc. * [gltext](https://github.com/go-gl/gltext) a native go library for glyph packing and text rendering * [glu](https://github.com/go-gl/glu) GLU bindings * [glchart](https://github.com/go-gl/glchart) a [go chart](https://github.com/vdobler/chart) OpenGL backend * [gldebug](https://github.com/go-gl/gldebug) graphical timing and memory debugging utilities # Problems and contributing If you encounter any problems please [file an issue](https://github.com/go-gl-legacy/gl/issues/new). Pull requests are welcome. We're looking for contributors! # Setting your GOPATH For the above `go get` to work without without requiring admin privileges, please refer to [go documentation](http://golang.org/doc/code.html) or this [five minute go screencast](http://www.youtube.com/watch?v=XCsL89YtqCs). Operating System Specific advice -------------------------------- The `go-gl/gl` authors primarily develop on Linux-based machines. The package should work on other operating systems, if you encounter problems after following the instructions below, please file an issue. ## Linux / OSX This package uses [cgo](http://golang.org/cmd/cgo/) and therefore you will need a C compiler such as GCC. On Debian, you can install `build-essential` to get this. You need to install the GLEW development libraries the appropriate package manager for your Linux distribution or by downloading the sources from the [GLEW website](http://glew.sourceforge.net/). For non-standard GLEW install locations, after `go get` cd to `$GOPATH/src/github.com/go-gl-legacy/gl` and run: CGO_CFLAGS="-I/path/to/includes" CGO_LDFLAGS="-L/path/to/libs" go install You may be able to determine the appropriate flags using: pkg-config glew --libs --cflags Note that we import from `GL/glew.h`, so if `pkg-config --cflags` reports `/opt/include/GL`, you may need to remove `/GL` so that `CGO_CFLAGS=-I/opt/include`. ## OSX The following instructions are currently a best guess. If you develop on OSX please [get in contact](http://go-gl.github.com) and let us know if this works, or [not](https://github.com/go-gl-legacy/gl/issues/new)! ### GLEW from Homebrew / Macports These can be used to install GLEW. Beware that you may need to set `CGO_CFLAGS` and `CGO_LDFLAGS` - the Linux instructions above are relevant. ## Windows Windows support is currently unknown. `gl` uses `cgo`, and therefore you will need a C compiler. If you install the GLEW to your compiler's include and lib directories, things should work. If they do not, please [contact us](http://go-gl.github.com). OpenGL 4.* ---------- The `glew-1.10` branch is available for those that need newer OpenGL 4.* functionality. To use it, manually clone the repository and checkout the branch. As the branchname implies, it's using GLEW 1.10. Forward compatibility --------------------- It is the intent of the `go-gl` authors to keep `gl` and related packages forward-compatible at both the API/ABI levels _per go release_ so that you can continue to import from this github repository. Development requiring breakage will occur on the `glew-1.10` branch, and will be merged with master when a new go version is released.