void ofxKinectTracking::init(){ openCL.setupFromOpenGL(); #ifndef NORMAL_CAMERA kinect = new ofxKinect(); kinect->init(); kinect->setVerbose(true); kinect->open(); //The depth image clImage[0].initFromTexture(kinect->getDepthTextureReference(), CL_MEM_READ_ONLY, 0); #else videoGrabber.initGrabber(640, 480, true); clImage[0].initWithTexture(640, 480, GL_LUMINANCE, CL_MEM_READ_ONLY); pixels = new unsigned char[640*480]; #endif //The debug image clImage[1].initWithTexture(640, 480, GL_RGBA); //Intialize the ants buffer resetBufferData(); clAntsBuffer.initBuffer(sizeof(Ant)*NUM_ANTS, CL_MEM_READ_WRITE, ants, true); //Buffer of shared variables sharedVariables[0] = 0; clSharedBuffer.initBuffer(sizeof(int)*1, CL_MEM_READ_WRITE, sharedVariables, true); openCL.loadProgramFromFile("../../../../../addons/ofxKinectTracking/src/KinectTracking.cl"); openCL.loadKernel("preUpdate"); openCL.loadKernel("update"); openCL.loadKernel("postUpdate"); }
//-------------------------------------------------------------- void testApp::setup(){ ofBackground(0, 0, 0); ofSetLogLevel(OF_LOG_VERBOSE); ofSetVerticalSync(false); #ifdef USE_OPENGL_CONTEXT opencl.setupFromOpenGL(); #else opencl.setup(CL_DEVICE_TYPE_CPU, 2); #endif for(int i=0; i<NUM_PARTICLES; i++) { Particle &p = particles[i]; p.vel.set(0, 0); p.mass = ofRandom(0.5, 1); particlesPos[i].set(ofRandomWidth(), ofRandomHeight()); } glGenBuffersARB(1, vbo); glBindBufferARB(GL_ARRAY_BUFFER_ARB, vbo[0]); glBufferDataARB(GL_ARRAY_BUFFER_ARB, sizeof(float2) * NUM_PARTICLES, particlesPos, GL_DYNAMIC_COPY_ARB); glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0); opencl.loadProgramFromFile("MSAOpenCL/Particle.cl"); kernelUpdate = opencl.loadKernel("updateParticle"); clMemParticles.initBuffer(sizeof(Particle) * NUM_PARTICLES, CL_MEM_READ_WRITE, particles); #ifdef USE_OPENGL_CONTEXT clMemPosVBO.initFromGLObject(vbo[0]); #else clMemPosVBO.initBuffer(sizeof(Vec2) * NUM_PARTICLES, CL_MEM_READ_WRITE, particlesPos); #endif kernelUpdate->setArg(0, clMemParticles.getCLMem()); kernelUpdate->setArg(1, clMemPosVBO.getCLMem()); kernelUpdate->setArg(2, mousePos); kernelUpdate->setArg(3, dimensions); glPointSize(1); }