aboutsummaryrefslogtreecommitdiff
path: root/v3.0/glfw/glfw.go
diff options
context:
space:
mode:
Diffstat (limited to 'v3.0/glfw/glfw.go')
-rw-r--r--v3.0/glfw/glfw.go85
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())
+}