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
C++ C
Latest commit 8ed85b1 Jan 23, 2016 @memo Merge pull request #13 from prisonerjohn/misc-fixes
Misc fixes

README.md

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

  • initial version