diff options
Diffstat (limited to 'v3.0/glfw/glfw.go')
-rw-r--r-- | v3.0/glfw/glfw.go | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/v3.0/glfw/glfw.go b/v3.0/glfw/glfw.go new file mode 100644 index 0000000..8890727 --- /dev/null +++ b/v3.0/glfw/glfw.go @@ -0,0 +1,85 @@ +package glfw + +// Not sure about the darwin flag + +// Windows users: If you download the GLFW 64-bit binaries, when you copy over the contents of the lib folder make sure to rename +// glfw3dll.a to libglfw3dll.a, it doesn't work otherwise. + +//#cgo windows LDFLAGS: -lglfw3dll -lopengl32 -lgdi32 +//#cgo windows CFLAGS: -DGLFW_DLL +//#cgo linux LDFLAGS: -lglfw +//#cgo darwin LDFLAGS: -lglfw3 -framework Cocoa -framework OpenGL -framework IOKit -framework CoreVideo +//#cgo freebsd LDFLAGS: -lglfw3 -lGL -lXrandr -lXxf86vm -lXi +//#include <GLFW/glfw3.h> +import "C" + +const ( + VersionMajor = C.GLFW_VERSION_MAJOR //This is incremented when the API is changed in non-compatible ways. + VersionMinor = C.GLFW_VERSION_MINOR //This is incremented when features are added to the API but it remains backward-compatible. + VersionRevision = C.GLFW_VERSION_REVISION //This is incremented when a bug fix release is made that does not contain any API changes. +) + +//Init initializes the GLFW library. Before most GLFW functions can be used, +//GLFW must be initialized, and before a program terminates GLFW should be +//terminated in order to free any resources allocated during or after +//initialization. +// +//If this function fails, it calls Terminate before returning. If it succeeds, +//you should call Terminate before the program exits. +// +//Additional calls to this function after successful initialization but before +//termination will succeed but will do nothing. +// +//This function may take several seconds to complete on some systems, while on +//other systems it may take only a fraction of a second to complete. +// +//On Mac OS X, this function will change the current directory of the +//application to the Contents/Resources subdirectory of the application's +//bundle, if present. +// +//This function may only be called from the main thread. See +//https://code.google.com/p/go-wiki/wiki/LockOSThread +func Init() bool { + return glfwbool(C.glfwInit()) +} + +//Terminate destroys all remaining windows, frees any allocated resources and +//sets the library to an uninitialized state. Once this is called, you must +//again call Init successfully before you will be able to use most GLFW +//functions. +// +//If GLFW has been successfully initialized, this function should be called +//before the program exits. If initialization fails, there is no need to call +//this function, as it is called by Init before it returns failure. +// +//This function may only be called from the main thread. See +//https://code.google.com/p/go-wiki/wiki/LockOSThread +func Terminate() { + C.glfwTerminate() +} + +//GetVersion retrieves the major, minor and revision numbers of the GLFW +//library. It is intended for when you are using GLFW as a shared library and +//want to ensure that you are using the minimum required version. +// +//This function may be called before Init. +func GetVersion() (major, minor, revision int) { + var ( + maj C.int + min C.int + rev C.int + ) + + C.glfwGetVersion(&maj, &min, &rev) + return int(maj), int(min), int(rev) +} + +//GetVersionString returns a static string generated at compile-time according +//to which configuration macros were defined. This is intended for use when +//submitting bug reports, to allow developers to see which code paths are +//enabled in a binary. +// +//This function may be called before Init. +func GetVersionString() string { + return C.GoString(C.glfwGetVersionString()) +} |