Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在视网膜显示器上使用QPainter、QOpenGLPaintDevice和QOpenGLWidget平滑绘制?_C++_Qt_Opengl_Qpainter - Fatal编程技术网

C++ 如何在视网膜显示器上使用QPainter、QOpenGLPaintDevice和QOpenGLWidget平滑绘制?

C++ 如何在视网膜显示器上使用QPainter、QOpenGLPaintDevice和QOpenGLWidget平滑绘制?,c++,qt,opengl,qpainter,C++,Qt,Opengl,Qpainter,当我尝试使用QWidget和QPainter绘图时,绘图非常滞后。我决定使用qopenglpaindevice和QOpenGLWidget来加速绘图。但与在常规小部件上绘制相比,形状的圆角非常粗糙 QWidget: QOpenGLWidget: 下面是我如何设置QOPENLPAINT设备的代码 QOpenGLPaintDevice* device = nullptr; void QOpenGLWorkspaceWidget::resizeGL(int w, int h) { ini

当我尝试使用
QWidget
QPainter
绘图时,绘图非常滞后。我决定使用
qopenglpaindevice
QOpenGLWidget
来加速绘图。但与在常规小部件上绘制相比,形状的圆角非常粗糙

QWidget:

QOpenGLWidget:

下面是我如何设置QOPENLPAINT设备的代码

QOpenGLPaintDevice* device = nullptr;

void QOpenGLWorkspaceWidget::resizeGL(int w, int h) {
    initDeviceIfNeed();
    handleResize(this, w, h);
    int ratio = devicePixelRatio();
    device->setSize(QSize(w * ratio, h * ratio));
    device->setDevicePixelRatio(ratio);
}

void QOpenGLWorkspaceWidget::initDeviceIfNeed() {
    if (!device) {
        device = new QOpenGLPaintDevice();
        drawer->setPaintDevice(device);
    }
}

void QOpenGLWorkspaceWidget::paintGL() {
    initDeviceIfNeed();
    glDisable(GL_DEPTH_TEST);
    glClearColor(1, 1, 1, 1);
    workspaceDrawer->draw();
}

我在这里找到了答案

openGlWidget.setSamples(8)
painter.setRenderHint(QPainter::抗锯齿)
完成了任务