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
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.
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.
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.
- CUDA SDK [https://developer.nvidia.com/cuda-downloads]
Some examples also require [ofxMSATimer]{https://github.com/memo/ofxMSATimer}
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.
none
- 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)
- MSAOpenCLBufferManagedT: Memory Object High level wrapper, allocates and manages host and client memory objects
- compatible with OF0072
- renamed (uppercase) MSA namespace to (lowercase) msa. (kept MSA as an alias for backwards compatibility)
- no longer requires MSACore
- move to centralized MSALibs (requires MSACore)
- everything is MSA:: namespace
- 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)
- 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)
- initial version