//----------------------------------------------------------------------------- void QGLImageGpuWidget::getPboOutput(iu::ImageGpu_8u_C4* image) { if (!image_) return; fillPbo(image); }
//----------------------------------------------------------------------------- void QGLImageGpuWidget::paintGL() { if(image_ == 0) return; // printf("QGLImageGpuWidget::paintGL()\n"); if (!glewIsSupported( "GL_VERSION_1_5 GL_ARB_vertex_buffer_object GL_ARB_pixel_buffer_object" )) { printf("!!!!!!!!!!!! CALL GLEW INIT !!!!!!!!!!!!\n"); glewInit(); return; } // check for min/max values if normalization is activated if(normalize_) this->autoMinMax(); // fill the picture buffer object fillPbo(); // common display code path { glBindBuffer(GL_PIXEL_UNPACK_BUFFER, gl_pbo_); glBindTexture(GL_TEXTURE_2D, gl_tex_ ); glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, image_->width(), image_->height(), GL_RGBA, GL_UNSIGNED_BYTE, NULL ); glMatrixMode(GL_PROJECTION); glPushMatrix(); glLoadIdentity (); glOrtho (-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); glViewport(0, 0, (int)floor(image_->width()*zoom_), (int)floor(image_->height()*zoom_)); #if 0 glBegin(GL_TRIANGLES); glTexCoord2f(0, 0); glVertex2f(-1, 1); glTexCoord2f(2, 0); glVertex2f( 3, 1); glTexCoord2f(0, 2); glVertex2f(-1,-3); glEnd(); #else glBegin(GL_QUADS); glTexCoord2f( 0.0, 0.0); glVertex3f(-1.0, 1.0, 0.5); glTexCoord2f( 1.0, 0.0); glVertex3f( 1.0, 1.0, 0.5); glTexCoord2f( 1.0, 1.0); glVertex3f( 1.0, -1.0, 0.5); glTexCoord2f( 0.0, 1.0); glVertex3f(-1.0, -1.0, 0.5); glEnd (); #endif } glPopMatrix(); // printf("QGLImageGpuWidget::paintGL() done\n"); }
void QGLImageGpuWidget::doCUDA() { // check for min/max values if normalization is activated if(normalize_) this->autoMinMax(); // fill the picture buffer object if (!fillPbo()) { printf("Something went wrong when filling the pbo, not displaying anything\n"); return; } // common display code path { glBindBuffer(GL_PIXEL_UNPACK_BUFFER, gl_pbo_); glBindTexture(GL_TEXTURE_2D, gl_tex_ ); glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, image_->width(), image_->height(), GL_RGBA, GL_UNSIGNED_BYTE, NULL ); glMatrixMode(GL_PROJECTION); glPushMatrix(); glLoadIdentity (); glOrtho (-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); glViewport(0, 0, (int)floor(image_->width()*zoom_), (int)floor(image_->height()*zoom_)); #if 0 glBegin(GL_TRIANGLES); glTexCoord2f(0, 0); glVertex2f(-1, 1); glTexCoord2f(2, 0); glVertex2f( 3, 1); glTexCoord2f(0, 2); glVertex2f(-1,-3); glEnd(); #else glBegin(GL_QUADS); glTexCoord2f( 0.0, 0.0); glVertex3f(-1.0, 1.0, 0.5); glTexCoord2f( 1.0, 0.0); glVertex3f( 1.0, 1.0, 0.5); glTexCoord2f( 1.0, 1.0); glVertex3f( 1.0, -1.0, 0.5); glTexCoord2f( 0.0, 1.0); glVertex3f(-1.0, -1.0, 0.5); glEnd (); #endif glPopMatrix(); glMatrixMode(GL_MODELVIEW); } updateCuda_ = false; }