void GLMouseWidget::paintGL(QImage* data)
{
//glClear(GL_COLOR_BUFFER_BIT);
//gldata = QGLWidget::convertToGLFormat(*data);
//glDrawPixels(data->width(), data->height(), GL_RGBA, GL_UNSIGNED_BYTE, gldata.bits());
}
此代码在支持OpenGL但不支持OpenGL ES1 \ 2的卡下工作正常。我已经读过我应该尝试使用纹理,但到目前为止我都失败了。有人可以共享代码段吗?我的图像是灰色循环的(QImage :: Format_Indexed8),我需要+ - 高效的代码片段,只是为了在QGLWidget上显示图像。
答案 0 :(得分:0)
所以这就是在qt4中这样做的方法。
GLMouseWidget::GLMouseWidget( int camWidth,int camHeight, QWidget* parent, Qt::WindowFlags f )
: QGLWidget( parent, 0, f )
{
qrf = QRectF (0.0f,0.0f,(float)camWidth,(float)camHeight);
//qrf = QRectF (0.0f,0.0f,800.0f,600.0f);
}
void GLMouseWidget::setNewFrame(QImage *image_){
glimage = QGLWidget::convertToGLFormat(*image_);
textureId = bindTexture(glimage);
}
void GLMouseWidget::paintGL()
{
drawTexture(qrf, textureId);
}
void GLMouseWidget::resizeGL(int w, int h)
{
glViewport (0, 0, w, h);
glMatrixMode (GL_PROJECTION);
glLoadIdentity();
glOrtho(0, w,0,h,-1,1);
glMatrixMode (GL_MODELVIEW);
}
来自课堂外你打电话
*img = cvMatToQImage(frame);
label->setNewFrame(img);
label->update();