ofxMSAOpenCL
Introduction
C++ openFrameworks addon for very simple to use wrapper for OpenCL. All underlying openCL objects are accessible to allow advanced features too if need be.
Demo (1M particles @ 100-200 fps) at vimeo.com/7332496
Licence
The code in this repository is available under the MIT License.
Copyright (c) 2008-2012 Memo Akten, www.memo.tv
The Mega Super Awesome Visuals Company
Some Windows & OpenGL / interop specific additions (c) tgfrerer, placed under MIT license.
Installation
Copy to your openFrameworks/addons folder.
I've had some problems on 10.8 with OpenCL. I've had to install these drivers www.nvidia.com/object/cuda-mac-driver.html for my graphics card to work.
Windows / VS 2012
On Windows using Visual Studio, make sure to point your compiler to the right location of the OpenCL headers. You'll find an example .props
property file in libs/OpenCL/lib/vs/
- this file should work for the latest Windows CUDA/OpenCL Nvidia SDK. You can add it to your project by clicking "Add Existing Property Sheet" in the vs2012 Property Manager window. If it doesn't work, inspect it using a text editor and make sure the path to the OpenCL headers is correct for your development system.
Dependencies
Windows / NVidia
Examples
Some examples also require [ofxMSATimer]{https://github.com/memo/ofxMSATimer}
Compatibility
openFrameworks 0.8+
I am generally testing only with openFrameworks, however it should work with Cinder too. If it doesn't, please file an issue.
Known issues
none
Version history
v2.3
- additions for safe OpenGL/OpenCL interop on windows and OS X
- reliable detection of platforms and devices on windows, OS X
- MSAOpenCLBufferManagedT to be compatible with GL interop elements (see particle example)
v2.2
- MSAOpenCLBufferManagedT: Memory Object High level wrapper, allocates and manages host and client memory objects
v2.1 23/09/2012
- compatible with OF0072
- renamed (uppercase) MSA namespace to (lowercase) msa. (kept MSA as an alias for backwards compatibility)
- no longer requires MSACore
v2.0
- move to centralized MSALibs (requires MSACore)
- everything is MSA:: namespace
v0.3
- added image support
- restructured buffer/memory management
- minor break in backwards compatability: createBuffer returns ofxOpenCLBuffer instead of cl_mem. so
- writeBuffer and readBuffer are methods of ofxOpenCLBuffer, not ofxOpenCL
- when passing buffer (or image) as parameter to ofxOpenCLKernel::setArg, use ofxOpenCLBuffer::getMemoryObject() (which returns the cl_mem)
v0.2
- added support for multiple devices
- sharing context with opengl (only on mac osx at the moment)
- better handling of multi-dimensional data (minor backwards compatability break with kernel::run)
- support for opengl/opencl buffer+texture sharing
- can load programs from binary (support for creating binary coming soon)
v0.1