mirror of https://github.com/liamg/aminal.git
193 lines
7.5 KiB
Markdown
193 lines
7.5 KiB
Markdown
# GLFW 3.3 for Go [](https://travis-ci.org/go-gl/glfw) [](https://godoc.org/github.com/go-gl/glfw/v3.3/glfw)
|
|
|
|
## Installation
|
|
|
|
* GLFW C library source is included and built automatically as part of the Go package. But you need to make sure you have dependencies of GLFW:
|
|
* On macOS, you need Xcode or Command Line Tools for Xcode (`xcode-select --install`) for required headers and libraries.
|
|
* On Ubuntu/Debian-like Linux distributions, you need `libgl1-mesa-dev` and `xorg-dev` packages.
|
|
* On CentOS/Fedora-like Linux distributions, you need `libX11-devel libXcursor-devel libXrandr-devel libXinerama-devel mesa-libGL-devel libXi-devel` packages.
|
|
* See [here](http://www.glfw.org/docs/latest/compile.html#compile_deps) for full details.
|
|
* Go 1.4+ is required on Windows (otherwise you must use MinGW v4.8.1 exactly, see [Go issue 8811](https://github.com/golang/go/issues/8811)).
|
|
|
|
```
|
|
go get -u github.com/go-gl/glfw/v3.3/glfw
|
|
```
|
|
|
|
## Usage
|
|
|
|
```Go
|
|
package main
|
|
|
|
import (
|
|
"runtime"
|
|
"github.com/go-gl/glfw/v3.3/glfw"
|
|
)
|
|
|
|
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() {
|
|
if !glfw.Init() {
|
|
panic(glfw.GetError())
|
|
}
|
|
defer glfw.Terminate()
|
|
|
|
window := glfw.CreateWindow(640, 480, "Testing", nil, nil)
|
|
if window == nil {
|
|
panic(glfw.GetError())
|
|
}
|
|
|
|
window.MakeContextCurrent()
|
|
|
|
for !window.ShouldClose() {
|
|
// Do OpenGL stuff.
|
|
window.SwapBuffers()
|
|
glfw.PollEvents()
|
|
}
|
|
}
|
|
```
|
|
|
|
## Changelog
|
|
|
|
* Internal error callback is now removed since GLFW now has a method called `GetError`. You can either set a custom error callback via `SetErrorCallback` or you can check for the last error via `GetError`. Due to this, some backward incompatible API changes needed to be made. See below for details.
|
|
* Joystick functions now uses receivers instead of passing the joystick ID as argument.
|
|
* Vulkan methods are intentionally not implemented. `Window.Handle` can be used to create a Vulkan surface via the [this](https://github.com/vulkan-go/vulkan) package.
|
|
|
|
### GLFW 3.3 Specific Changes
|
|
* Renamed `Window.GLFWWindow` to `Window.Handle`
|
|
* Added function `SetErrorCallback`.
|
|
* Added function `GetError`.
|
|
* Added function `Window.RequestAttention`.
|
|
* Added function `Window.SetAttrib`.
|
|
* Added function `Window.GetContentScale`.
|
|
* Added function `Window.GetOpacity`.
|
|
* Added function `Window.SetOpacity`.
|
|
* Added function `Window.SetMaximizeCallback`.
|
|
* Added function `Window.SetContentScaleCallback`.
|
|
* Added function `Monitor.GetContentScale`.
|
|
* Added function `Monitor.SetUserPointer`.
|
|
* Added function `Monitor.GetUserPointer`.
|
|
* Added function `GetKeyScancode`.
|
|
* Added function `InitHint`.
|
|
* Added function `Joystick.GetHats`.
|
|
* Added function `Joystick.IsGamepad`.
|
|
* Added function `Joystick.GetGUID`.
|
|
* Added function `Joystick.GetGamepadName`.
|
|
* Added function `Joystick.GetGamepadState`.
|
|
* Added function `Joystick.SetUserPointer`.
|
|
* Added function `Joystick.GetUserPointer`.
|
|
* Added function `UpdateGamepadMappings`.
|
|
* Added function `SetX11SelectionString`.
|
|
* Added function `GetX11SelectionString`.
|
|
* Added function `WindowHintString`.
|
|
* Added gamepad button IDs.
|
|
* Added gamepad axis IDs.
|
|
* Added joystick hat state IDs.
|
|
* Added hint `Hovered`.
|
|
* Added hint `CenterCursor`.
|
|
* Added hint `JoystickHatButtons`.
|
|
* Added hint `CocoaChdirResources`.
|
|
* Added hint `CocoaMenubar`.
|
|
* Added hint `TransparentFramebuffer`.
|
|
* Added hint value `OSMesaContextAPI`.
|
|
* `MonitorEvent` renamed to `PeripheralEvent` for reuse with joystick events.
|
|
* `Init` Returns `bool` instead of error.
|
|
* `Joystick.GetButtons` Returns `[]Action` instead of `[]byte`.
|
|
* `SetMonitorCallback` Returns `MonitorCallback`.
|
|
* `Focus` No longer returns an error.
|
|
* `Iconify` No longer returns an error.
|
|
* `Maximize` No longer returns an error.
|
|
* `Restore` No longer returns an error.
|
|
* `GetClipboardString` No longer returns an error.
|
|
|
|
### GLFW 3.2 Specfic Changes
|
|
* Added function `Window.SetSizeLimits`.
|
|
* Added function `Window.SetAspectRatio`.
|
|
* Added function `Window.SetMonitor`.
|
|
* Added function `Window.Maximize`.
|
|
* Added function `Window.SetIcon`.
|
|
* Added function `Window.Focus`.
|
|
* Added function `GetKeyName`.
|
|
* Added function `VulkanSupported`.
|
|
* Added function `GetTimerValue`.
|
|
* Added function `GetTimerFrequency`.
|
|
* Added function `WaitEventsTimeout`.
|
|
* Added function `SetJoystickCallback`.
|
|
* Added window hint `Maximized`.
|
|
* Added hint `NoAPI`.
|
|
* Added hint `NativeContextAPI`.
|
|
* Added hint `EGLContextAPI`.
|
|
|
|
### 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.Iconify` 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...`.
|