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
Switch branches/tags
Nothing to show
Clone or download
memo Merge pull request #16 from underdoeg/master
add shared gl context on linux
Latest commit 4447bca Sep 17, 2017
Type Name Latest commit message Commit time
Failed to load latest commit information.
example-Hello World
example-Particles added nvidia cuda props to release project Oct 23, 2014
.gitignore first commit Sep 24, 2012




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.

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.


Windows / NVidia


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.

Known issues


Version history


  • 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

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


  • 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