golang wrapper of Valve's OpenVR library

go get


Openvr-go v0.1.0

Openvr-go is an Go programming language wrapper for the OpenVR SDK published by Valve for VR hardware.



At present, it is very much in an alpha stage with new development happening to complete the API exposed by the OpenVR SDK.


The wrapper library itself doesn't have any dependencies. The connectiontest sample in the examples folder also doesn't have any dependencies.

The other samples are graphical and use the following libraries, though they are not imported by the core openvr-go module itself:

  • Mathgl - for 3d math
  • GLFW (v3.1) - creating windows and providing the OpenGL context
  • Fizzle - provides the graphics engine
  • Go GL - provides the backend implementation of OpenGL for Fizzle.


The dependency Go libraries for graphical examples can be installed with the following commands.

go get
go get
go get
go get

This does assume that you have the native GLFW 3.1 library installed already accessible to Go tools.

Additionally, the appropriate openvr_api.dll or file from vendor/openvr/bin/<platform> will either need to be copied into each example directory being built or it will need to be accessible system wide.

Each sample can be built by going to that directory in a shell and executing a go build command. For example:

cd $GOPATH/src/
go build
cp ../../vendor/openvr/bin/win64/openvr_api.dll .

Current Features

Partial implementation of the following interfaces:

  • IVRSystem
  • IVRCompositor
  • IVRRenderModels

Implementation Notes

Some minor patches have been applied to the vendored openvr library version to better support linux.


Original source code in openvr-go is released under the BSD license. See the LICENSE file for more details.

Projects in the vendor folder may have their own LICENSE file.