如何解决QPainter 和 OpenGL 透明度问题
我一直在为这个问题苦苦挣扎。
我有一个 QOpenGLWidget 对象,用于渲染纹理(图像) 以及使用着色器(3.30 核心配置文件)在 OpenGL 上下文中的点云 (GL_POINTS)。
一切正常,但是当我尝试使用 QPainter 进行渲染时 一些文字,点云的透明度消失了。这发生在 将此添加到 QOpenGLWidget 的 paintGL() 函数中:
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 举报,一经查实,本站将立刻删除。