blob: 4db7379a4581b8ad2999e5769fc9f2a22f7af34c [file] [log] [blame] [view]
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/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/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/glfw3) 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/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/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/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.