diff options
Diffstat (limited to 'README.md')
-rw-r--r-- | README.md | 121 |
1 files changed, 92 insertions, 29 deletions
@@ -1,46 +1,34 @@ -Go Bindings for GLFW 3 -====================== +# Go Bindings for GLFW 3.1 -* This wrapper is now announced stable. There will be no API change until next major revision. -* API breaking changes are in *devel* branch. -* See [here](http://godoc.org/github.com/go-gl/glfw3) for documentation. +* **ATTENTION:** As of GLFW 3.1 we break API. See Changelog below. +* See [here](http://godoc.org/github.com/go-gl/glfw/v3.1/glfw) for documentation. * You can help by submitting examples to [go-gl/examples](http://github.com/go-gl/examples). -Remarks -======= +## Installation -* Mingw64 users should rename ***glfw3dll.a*** to ***libglfw3dll.a***. -* In Windows and Linux, if you compile GLFW yourself, use <code>-DBUILD_SHARED_LIBS=on</code> with cmake in order to build the dynamic libraries. -* Some functions -which are marked in the documentation- can be called only from the main thread. Click [here](https://code.google.com/p/go-wiki/wiki/LockOSThread) for how. -* In OS X, you can install Go and GLFW via [Homebrew](http://brew.sh/). +* Installation is easy, just `go get github.com/go-gl/glfw/v3.1/glfw` and be done (*GLFW sources are included so you don't have to build GLFW on your own*)! +* Go 1.4 is required on Windows (otherwise you must use MinGW v4.8.1 exactly, see [Go issue 8811](https://code.google.com/p/go/issues/detail?id=8811)). -``` -$ brew install go -$ brew tap homebrew/versions -$ brew install --build-bottle --static glfw3 -$ go get github.com/go-gl/glfw3 -``` - -Example -======= +## Usage ```go package main import ( - "fmt" - glfw "github.com/go-gl/glfw3" + "runtime" + "github.com/go-gl/glfw/v3.1/glfw" ) -func errorCallback(err glfw.ErrorCode, desc string) { - fmt.Printf("%v: %v\n", err, desc) +func init() { + // This is needed to arrange that main() runs on main thread. + // See documentation for functions that are only allowed to be called from the main thread. + runtime.LockOSThread() } func main() { - glfw.SetErrorCallback(errorCallback) - - if !glfw.Init() { - panic("Can't init glfw!") + err := glfw.Init() + if err != nil { + panic(err) } defer glfw.Terminate() @@ -52,9 +40,84 @@ func main() { window.MakeContextCurrent() for !window.ShouldClose() { - //Do OpenGL stuff + // Do OpenGL stuff window.SwapBuffers() glfw.PollEvents() } } ``` + +## Changelog + +* Easy `go get` installation. GLFW source code is now included in-repo and compiled in so you don't have to build GLFW on your own and distribute shared libraries. The revision of GLFW C library used is listed in [GLFW_C_REVISION.txt](GLFW_C_REVISION.txt) file. +* The error callback is now set internally. Functions return an error with corresponding code and description (do a type assertion to glfw3.Error for accessing the variables) if the error is recoverable. If not a panic will occur. + +### GLFW 3.1 Specfic Changes +* Added type `Cursor`. +* Added function `Window.SetDropCallback`. +* Added function `Window.SetCharModsCallback`. +* Added function `PostEmptyEvent`. +* Added function `CreateCursor`. +* Added function `CreateStandardCursor`. +* Added function `Cursor.Destroy`. +* Added function `Window.SetCursor`. +* Added function `Window.GetFrameSize`. +* Added window hint `Floating`. +* Added window hint `AutoIconify`. +* Added window hint `ContextReleaseBehavior`. +* Added window hint `DoubleBuffer`. +* Added hint value `AnyReleaseBehavior`. +* Added hint value `ReleaseBehaviorFlush`. +* Added hint value `ReleaseBehaviorNone`. +* Added hint value `DontCare`. + +### API changes +* `Window.Iconfiy` Returns an error. +* `Window.Restore` Returns an error. +* `Init` Returns an error instead of `bool`. +* `GetJoystickAxes` No longer returns an error. +* `GetJoystickButtons` No longer returns an error. +* `GetJoystickName` No longer returns an error. +* `GetMonitors` No longer returns an error. +* `GetPrimaryMonitor` No longer returns an error. +* `Monitor.GetGammaRamp` No longer returns an error. +* `Monitor.GetVideoMode` No longer returns an error. +* `Monitor.GetVideoModes` No longer returns an error. +* `GetCurrentContext` No longer returns an error. +* `Window.SetCharCallback` Accepts `rune` instead of `uint`. +* Added type `Error`. +* Removed `SetErrorCallback`. +* Removed error code `NotInitialized`. +* Removed error code `NoCurrentContext`. +* Removed error code `InvalidEnum`. +* Removed error code `InvalidValue`. +* Removed error code `OutOfMemory`. +* Removed error code `PlatformError`. +* Removed `KeyBracket`. +* Renamed `Window.SetCharacterCallback` to `Window.SetCharCallback`. +* Renamed `Window.GetCursorPosition` to `GetCursorPos`. +* Renamed `Window.SetCursorPosition` to `SetCursorPos`. +* Renamed `CursorPositionCallback` to `CursorPosCallback`. +* Renamed `Window.SetCursorPositionCallback` to `SetCursorPosCallback`. +* Renamed `VideoMode` to `VidMode`. +* Renamed `Monitor.GetPosition` to `Monitor.GetPos`. +* Renamed `Window.GetPosition` to `Window.GetPos`. +* Renamed `Window.SetPosition` to `Window.SetPos`. +* Renamed `Window.GetAttribute` to `Window.GetAttrib`. +* Renamed `Window.SetPositionCallback` to `Window.SetPosCallback`. +* Renamed `PositionCallback` to `PosCallback`. +* Ranamed `Cursor` to `CursorMode`. +* Renamed `StickyKeys` to `StickyKeysMode`. +* Renamed `StickyMouseButtons` to `StickyMouseButtonsMode`. +* Renamed `ApiUnavailable` to `APIUnavailable`. +* Renamed `ClientApi` to `ClientAPI`. +* Renamed `OpenglForwardCompatible` to `OpenGLForwardCompatible`. +* Renamed `OpenglDebugContext` to `OpenGLDebugContext`. +* Renamed `OpenglProfile` to `OpenGLProfile`. +* Renamed `SrgbCapable` to `SRGBCapable`. +* Renamed `OpenglApi` to `OpenGLAPI`. +* Renamed `OpenglEsApi` to `OpenGLESAPI`. +* Renamed `OpenglAnyProfile` to `OpenGLAnyProfile`. +* Renamed `OpenglCoreProfile` to `OpenGLCoreProfile`. +* Renamed `OpenglCompatProfile` to `OpenGLCompatProfile`. +* Renamed `KeyKp...` to `KeyKP...`. |