本文整理汇总了C++中msa::OpenCL::finish方法的典型用法代码示例。如果您正苦于以下问题:C++ OpenCL::finish方法的具体用法?C++ OpenCL::finish怎么用?C++ OpenCL::finish使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类msa::OpenCL
的用法示例。
在下文中一共展示了OpenCL::finish方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: draw
//--------------------------------------------------------------
void ofApp::draw(){
opencl.finish();
glColor3f(1.0f, 1.0f, 1.0f);
glBindBufferARB(GL_ARRAY_BUFFER_ARB, vbo);
opencl.finish();
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(2, GL_FLOAT, 0, 0);
glDrawArrays(GL_POINTS, 0, NUM_PARTICLES);
glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0);
glColor3f(1, 1, 1);
string info = "fps: " + ofToString(ofGetFrameRate()) + "\nnumber of particles: " + ofToString(NUM_PARTICLES);
ofDrawBitmapString(info, 20, 20);
}
示例2: draw
//--------------------------------------------------------------
void testApp::draw(){
glColor3f(1.0f, 1.0f, 1.0f);
glBindBufferARB(GL_ARRAY_BUFFER_ARB, vbo[0]);
#ifdef USE_OPENGL_CONTEXT
opencl.finish();
#else
opencl.readBuffer(sizeof(Vec2) * NUM_PARTICLES, clMemPosVBO, particlesPos);
glBufferSubDataARB(GL_ARRAY_BUFFER_ARB, 0, sizeof(Vec2) * NUM_PARTICLES, particlesPos);
#endif
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(2, GL_FLOAT, 0, 0);
glDrawArrays(GL_POINTS, 0, NUM_PARTICLES);
glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0);
glColor3f(1, 1, 1);
string info = "fps: " + ofToString(ofGetFrameRate()) + "\nnumber of particles: " + ofToString(NUM_PARTICLES);
ofDrawBitmapString(info, 20, 20);
}
示例3: draw
//--------------------------------------------------------------
void testApp::draw(){
videoGrabber.draw(0, 200);
// make sure all OpenCL kernels have finished executing before drawing
openCL.finish();
// draw the OpenGL texture (which was mapped to the OpenCL image)
clImage[activeImageIndex].getTexture().draw(vidWidth, 200);
ofDrawBitmapString( " app FPS : " + ofToString(ofGetFrameRate(), 2)
+ "\n capture FPS : " + ofToString(captureFPS, 2)
+ "\n"
+ "\n doBlur (b) : " + (doBlur ? "X" : "")
+ "\n blurAmount (1-9) : " + ofToString(blurAmount)
+ "\n doFlipX (x) : " + (doFlipX ? "X" : "")
+ "\n doFlipY (y) : " + (doFlipY ? "X" : "")
+ "\n doGreyscale (g) : " + (doGreyscale ? "X" : "")
+ "\n doInvert (i) : " + (doInvert ? "X" : "")
+ "\n doThreshold (t) : " + (doThreshold ? "X" : "")
+ "\n threshLevel ([]) : " + ofToString(threshLevel, 2)
, 30, 30);
}
示例4: drawDepth
void ofxKinectTracking::drawDepth(int x, int y, int w, int h){
ofSetColor(255, 255, 255);
openCL.finish();
#ifndef NORMAL_CAMERA
kinect->drawDepth(x,y,w,h);
#else
clImage[0].draw(x,y,w,h);
#endif
clImage[1].draw(x+w, y, w,h);
ofSetColor(255, 0, 0);
ofDrawBitmapString(ofToString(ofGetFrameRate(), 1), ofPoint(20,20));
ofEnableAlphaBlending();
glTranslated(0, 480*2, 0);
float scale = 5000.0;
{
ofSetColor(255, 255, 255,100);
double avg = 0;
glBegin(GL_LINE_STRIP);
for(int i=10;i<totalTime.size();i++){
glVertex2d(i*3, -totalTime[i]*scale);
avg += totalTime[i];
}
glEnd();
avg /=totalTime.size()-10;
ofSetColor(255, 100, 255,255);
ofLine(0, -avg*scale, 640*2, -avg*scale);
ofDrawBitmapString("Avg: "+ofToString(avg*10000, 2), ofPoint(5,-avg*scale-10));
double percentage = ((avg)/(1/30.0))*100;
ofSetColor(255, 255, 255);
ofDrawBitmapString("Time percentage of one frame used on openCL: "+ofToString(percentage, 2)+"%", ofPoint(5,-460));
}
{
ofSetColor(255, 0, 0,150);
double avg = 0;
glBegin(GL_LINE_STRIP);
for(int i=10;i<killingTime.size();i++){
// cout<<totalTime[i]*10000.0<<endl;
glVertex2d(i*3, -killingTime[i]*scale);
avg += killingTime[i];
}
glEnd();
avg /=killingTime.size()-10;
ofSetColor(255, 100, 0);
ofLine(0, -avg*scale, 640*2, -avg*scale);
ofDrawBitmapString("K Avg: "+ofToString(avg*10000, 2), ofPoint(5,-avg*scale-10));
}
{
ofSetColor(0, 255, 0,150);
double avg = 0;
glBegin(GL_LINE_STRIP);
for(int i=10;i<spawningTime.size();i++){
// cout<<totalTime[i]*10000.0<<endl;
glVertex2d(i*3, -spawningTime[i]*scale);
avg += spawningTime[i];
}
glEnd();
avg /=spawningTime.size()-10;
ofSetColor(100, 255, 0);
ofLine(0, -avg*scale, 640*2, -avg*scale);
ofDrawBitmapString("S Avg: "+ofToString(avg*10000, 2), ofPoint(5,-avg*scale-10));
}
{
ofSetColor(0, 0, 255,150);
double avg = 0;
glBegin(GL_LINE_STRIP);
for(int i=10;i<updateTime.size();i++){
// cout<<totalTime[i]*10000.0<<endl;
glVertex2d(i*3, -updateTime[i]*scale);
avg += updateTime[i];
}
glEnd();
avg /=updateTime.size()-10;
ofSetColor(0, 100, 255);
ofLine(0, -avg*scale, 640*2, -avg*scale);
ofDrawBitmapString("U Avg: "+ofToString(avg*10000, 2), ofPoint(5,-avg*scale-10));
}
}
示例5: update
void ofxKinectTracking::update(){
bool newFrame;
#ifndef NORMAL_CAMERA
kinect->update();
newFrame = kinect->isFrameNew();
#else
videoGrabber.update();
newFrame = videoGrabber.isFrameNew();
if(newFrame){
int pixelIndex = 0;
for(int i=0; i<640; i++) {
for(int j=0; j<480; j++) {
int indexRGB = pixelIndex * 3;
int indexL = pixelIndex;
pixels[indexL] = videoGrabber.getPixels()[indexRGB+1 ];
pixelIndex++;
}
}
// write the new pixel data into the OpenCL Image (and thus the OpenGL texture)
clImage[0].write(pixels);
}
#endif
if(newFrame){
cl_int2 spawnCoord = {int(ofRandom(0, 640)), int(ofRandom(0, 480))};
if(ofRandom(0, 1) < 0.500){
spawnCoord[0] = -1;
spawnCoord[0] = -1;
}
MSA::OpenCLKernel *preKernel = openCL.kernel("preUpdate");
MSA::OpenCLKernel *updateKernel = openCL.kernel("update");
MSA::OpenCLKernel *postKernel = openCL.kernel("postUpdate");
//Prepare timetaking
double totalTimeTmp;
uint64_t mbeg, mend;
openCL.finish();
mbeg = mach_absolute_time();
//Run pre update kernel
preKernel->setArg(0, clImage[0].getCLMem());
preKernel->setArg(1, clAntsBuffer.getCLMem());
preKernel->run2D(640, 480);
//Calculate time
openCL.finish();
mend = mach_absolute_time();
killingTime.push_back(machcore(mend, mbeg));
totalTimeTmp = machcore(mend, mbeg);
mbeg = mach_absolute_time();
//Run update kernel
size_t shared_size = (1 * 64) * sizeof(int);
updateKernel->setArg(0, clAntsBuffer.getCLMem());
updateKernel->setArg(1, clSharedBuffer.getCLMem());
updateKernel->setArg(2, spawnCoord);
clSetKernelArg(updateKernel->getCLKernel(), 3, shared_size, NULL);
for(int i=0;i<NUM_ITERATIONS;i++){
updateKernel->run2D(640, 480);
}
//Calculate time
openCL.finish();
mend = mach_absolute_time();
spawningTime.push_back(machcore(mend, mbeg));
totalTimeTmp += machcore(mend, mbeg);
mbeg = mach_absolute_time();
//Run post update kernel
postKernel->setArg(0, clImage[0].getCLMem());
postKernel->setArg(1, clImage[1].getCLMem());
postKernel->setArg(2, clAntsBuffer.getCLMem());
postKernel->setArg(3, clSharedBuffer.getCLMem());
postKernel->setArg(4, spawnCoord);
postKernel->run2D(640, 480);
//Calculate time
openCL.finish();
mend = mach_absolute_time();
updateTime.push_back(machcore(mend, mbeg));
totalTimeTmp += machcore(mend, mbeg);
totalTime.push_back(totalTimeTmp);
if(totalTime.size() > (640*2)/3){
totalTime.erase(totalTime.begin());
killingTime.erase(killingTime.begin());
spawningTime.erase(spawningTime.begin());
updateTime.erase(updateTime.begin());
}
}
//.........这里部分代码省略.........