49 lines
2.1 KiB
Plaintext
49 lines
2.1 KiB
Plaintext
|
[/===========================================================================
|
||
|
Copyright (c) 2013-2015 Kyle Lutz <kyle.r.lutz@gmail.com>
|
||
|
|
||
|
Distributed under the Boost Software License, Version 1.0
|
||
|
See accompanying file LICENSE_1_0.txt or copy at
|
||
|
http://www.boost.org/LICENSE_1_0.txt
|
||
|
=============================================================================/]
|
||
|
|
||
|
[section:interop Interoperability]
|
||
|
|
||
|
Boost.Compute provides a number of facilities to ease interoperability with
|
||
|
other C and C++ libraries including [@http://en.wikipedia.org/wiki/OpenGL
|
||
|
OpenGL], [@http://opencv.org/ OpenCV], [@http://eigen.tuxfamily.org Eigen],
|
||
|
[@http://qt-project.org/ Qt], and [@http://vtk.org/ VTK].
|
||
|
|
||
|
All of the interop headers are located in the `<boost/compute/interop/...>`
|
||
|
directory.
|
||
|
|
||
|
[section OpenGL]
|
||
|
|
||
|
OpenGL is a standard API for 3D graphics and closely related to OpenCL.
|
||
|
|
||
|
Boost.Compute provides an easy way to create a shared OpenCL/OpenGL context
|
||
|
via the [funcref boost::compute::opengl_create_shared_context
|
||
|
opengl_create_shared_context()] function. This creates a Boost.Compute
|
||
|
[classref boost::compute::context context] object which can be used to create
|
||
|
OpenCL memory buffers corresponding to OpenGL memory objects (such as VBOs).
|
||
|
This allows for OpenCL kernels to read and write data which is then used
|
||
|
directly for rendering with OpenGL.
|
||
|
|
||
|
Boost.Compute provides a few classes to manage OpenGL objects and make them
|
||
|
accessible to OpenCL. These include [classref boost::compute::opengl_buffer
|
||
|
opengl_buffer] (for OpenGL memory objects) and [classref
|
||
|
boost::compute::opengl_texture opengl_texture] (for OpenGL texture objects).
|
||
|
|
||
|
Control of shared OpenCL/OpenGL memory objects is transfered between OpenCL and
|
||
|
OpenGL using the [funcref boost::compute::opengl_enqueue_acquire_gl_objects
|
||
|
opengl_enqueue_acquire_gl_objects()] and [funcref
|
||
|
boost::compute::opengl_enqueue_release_gl_objects
|
||
|
opengl_enqueue_release_gl_objects()] functions.
|
||
|
|
||
|
See the OpenCL documentation for the
|
||
|
[@https://www.khronos.org/registry/cl/sdk/1.2/docs/man/xhtml/cl_khr_gl_sharing.html
|
||
|
cl_khr_gl_sharing] extension for more information.
|
||
|
|
||
|
[endsect] [/ opengl]
|
||
|
|
||
|
[endsect] [/ interop ]
|