从QGLWidget切换到QOpenGLWidget后,OpenGL混合似乎有点奇怪

时间:2017-06-30 18:20:50

标签: macos qt opengl qglwidget

我正在将我的3D建模应用程序从使用Qt的QGLWidget切换到QOpenGLWidget,因为后者是在Qt中使用OpenGL的更新版本。但是,在切换之后,OpenGL混合似乎表现不同。当我在3D模型上绘制多边形/子线时,这里使用颜色源alpha中的.5(即50%)的直黑色,旧的QGLWidget按预期混合,而较新的QOpenGLWidget以某种方式绘制实际上更轻的线条而不是他们正在绘制/混合的颜色:

较旧的QGLWidget,将50%的黑线混合看起来如预期: Older QGLWidget, blending black lines at 50% looks as expected 更新的QOpenGLWidget,在以50%混合时以某种方式将黑色线条变成更亮的线条: Newer QOpenGLWidget, somehow turning black lines into lighter lines when blending at 50%

你可以在地板上的红色网格线上看到类似的问题,在后一种情况下,当使用混合时,它会将浅红色绘制成浅粉红色。

我正在使用简单的混合代码,基本上如下:

glDisable(GL_LIGHTING);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glColor4f(0, 0, 0, .5);
...
//then draw lines

我猜它与framebuffer的alpha通道中的某些东西有关,或类似的东西,任何想法?哦,这是在Mac上,我还没有在Windows上试过它。

1 个答案:

答案 0 :(得分:0)

在我创建QApplication之前把它放在main中似乎解决了它,不明白为什么:

QSurfaceFormat myFormat = QSurfaceFormat::defaultFormat();
myFormat.setSamples(1);
QSurfaceFormat::setDefaultFormat(myFormat);