繁体   English   中英

从QGLWidget切换到QOpenGLWidget后,OpenGL混合似乎有些不同

[英]OpenGL blending seems to be weirdly different after switching from QGLWidget to QOpenGLWidget

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

较旧的QGLWidget,以50%的比例混合黑色线条看起来像预期的那样: 较旧的QGLWidget,以50%的比例混合黑线看起来像预期 较新的QOpenGLWidget,以50%的比例混合时会以某种方式将黑线变成较亮的线: 较新的QOpenGLWidget,以50%的混合比例将黑线变成较亮的线

您可以在地板上的红色网格线中看到类似的问题,在后一种情况下,如何在使用混合时将深红色绘制为浅粉红色。

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

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

我猜想这与帧缓冲区的Alpha通道中的其他内容或类似内容有关,有什么想法吗? 哦,这是在Mac上,我还没有在Windows上尝试过。

在创建QApplication之前将其放到主目录似乎可以解决它,不知道为什么:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM