Package vkg implements an abstraction atop the Vulkan graphics framework for go. Vulkan is a very powerful graphics and compute framework, which expands upon what is possible with OpenGL and OpenCL, but at a cost - it is very difficult and complex to use, yet very powerful. This package provides utility functions and objects which make Vulkan a little more paltable to gophers, with the drawback that it cannot possibly expose all the power inherent in Vulkan, so it strives to avoid limiting users when they desire to utilize the full power of Vulkan. Vulkan overcomes many of the drawbacks of OpenGL by providing a much less abstracted interface to GPUs at a pretty hefty cost, all the things OpenGL managed previously are now up to the implementing application to manage. This documentation is woefully inadequate at fully descrbing how Vulkan works, and is meant to provide a refersher and perhaps some bread crumbs which will aid in undersatnding the system. At a high level vulkan provides a method of submiting work to command queues which execute various pipeline (which the application has configured) to either display graphics or peform compute work. An example of a pipeline might be one which displays a set of vertex data in a specific way, or a compute pipeline which pefroms some massively parallel mathmatical operation on a large set of data. The challenge then becomes providing the data in a way which these pipelines can utilize, so the data must be described adqueately enough so that the GPU can work with the data in an optimal way. To allow application developers to better utilize the underlying hardware, many decisions about how this data is managed is now left up to the application developer, rather than manged by a framework like OpenGL. This means the application developer is now responsible for deciding where the data which is to be processed by the pipeline will reside, what the format of the data is and how to make sure the data arrives at the appopriate time to best utilize the underlying hardware (this is a daunting task and application specific). So a game developed with Vulkan will have different needs and priorites than a scientific computing application developed with Vulkan, or even a 3D editor. This package can provide some assitance in getting started with vulkan but cannot possibly provide apporpaite abstractions for all possible use cases, or else it would fall into the trap of OpenGL - doing too much in a sub optimal way. Back to a discussion of Vulkan, we have command queues, which are feeding pipelines, which are using data provided by the application. Native Vulkan terms When thinking about how a graphics application with Vulkan works a very high level sequences of might be: This package provides a basic set of APIs which wrap some of the Vulkan APIs to make them a bit less painful to work with, the trade off being that many of the native Vulkan APIs expose options which are not exposed in the APIs provided by the package. To mitigate the drawback of this approach native vulkan structures are exposed in all the objects prefixed with the 'VK' in the name - so applications aren't limited by what this package provides. This package goes beyond what Vulkan natively provides to make Vulkan a bit easier to work with: GraphicsApp: ResourceManager: Utility interfaces:
Package vk implements VKontakte API (including OAuth)
Package vk implements VKontakte API (including OAuth)
Package vksdk implements the basic VK API functions. Source https://github.com/error-ident/vksdk
Package vksdk implements the basic VK API functions. Source https://github.com/derad6709org/vksdk
Package vksdk implements the basic VK API functions. Source https://github.com/Derad6709/vksdk
Package vkm provides matrix math functions targeted at computer graphics. It was built for use with go-vk (https://github.com/bbredesen/go-vk), but should be appropriate for any graphics API expecting column-major matricies. All matricies are 4x4. The Vec and Pt types are 4-component, homogenous column vectors. You can directly instantiate them via: but it is recommended instead to call the New... functions to ensure that the fourth component is correctly set. Convenience "zero value" functions for the Origin, ZeroVec, and Identity matrix are included. Additionally, standard transformation matricies are provided. You can either generate the matrix directly: or you can apply a transformation to an existing matrix: Note that applied transformations are left-multiplied, so m.Translate(v) = T(v) x m, whereas calling MultM will right-multiply: m.MultM(t) = m x t.
Package vksdk implements the basic VK API functions. Source https://github.com/SevereCloud/vksdk