QPainter 和 OpenGL 透明度问题

问题描述

我一直在为这个问题苦苦挣扎。

我有一个 qopenglwidget 对象,用于渲染纹理(图像) 以及使用着色器(3.30 核心配置文件)在 OpenGL 上下文中的点云 (GL_POINTS)。

一切正常,但是当我尝试使用 QPainter 进行渲染时 一些文字,点云的透明度消失了。这发生在 将此添加qopenglwidgetpaintGL() 函数中:

QPainter painter(this);

点变成实心(不透明),这不会发生 否则。当然,我可以摆脱 QPainter 并使用更多 着色器来渲染文本,但我很困惑,因为我会 没想到这会发生。我可能在 OpenGL 中遗漏了一些东西 设置,但我无法理解。

这是我配置 OpenGL 上下文的方式:

    QSurfaceFormat format;
    format.setVersion(3,3);
    format.setDepthBufferSize(24);
    format.setProfile(QSurfaceFormat::CoreProfile);
    format.setRenderableType(QSurfaceFormat::OpenGL);
    QSurfaceFormat::setDefaultFormat(format);

    gldisable(GL_CULL_FACE);
    glEnable(GL_VERTEX_PROGRAM_POINT_SIZE);
    glEnable(GL_POINT_SMOOTH);
    glEnable(GL_LINE_SMOOTH);
    glEnable(GL_POINT_SPRITE);
    glHint(GL_LINE_SMOOTH_HINT,GL_NICEST);
    glHint(GL_POINT_SMOOTH_HINT,GL_NICEST);
    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);

虽然,我认为这个问题与 OpenGL 没有任何关系 配置。任何帮助将不胜感激,谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)