2017-06-30 4 views
0

3DモデリングアプリケーションをQtのQGLWidgetからQOpenGLWidgetに切り替えるのは、後者がQtでOpenGLを使用するより新しいバージョンであるためです。しかし、切り替えた後、OpenGLのブレンドは異なる動作をしているようです。 3Dモデル上にポリゴン/サブラインを描画すると、ここではカラーソースアルファで0.5(つまり50%)の真っ黒な色を使用して、古いQGLWidgetが予想どおりにブレンドされ、新しいQOpenGLWidgetは実際にライターQGLWidgetからQOpenGLWidgetに切り替えた後、OpenGLブレンディングが変わったようです

古い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%彼らはとのブレンド/オーバー描いている色より

フロアの赤いグリッド線で同様の問題が発生することがあります。後者の場合は、ブレンドを使用すると淡いピンクのような濃い赤色を描いていますing。

私は、単純なブレンドコードを使用して、基本的に次のようだ:

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

を、私はそれがフレームバッファのアルファチャンネルまたはそのような何かで別の何かとは何か、任意のアイデアを持って推測していますか?ああ、これはMac上で、私はまだWindows上でそれを試していない。私ははQApplicationを作成する前にメインでこれを置く

答えて

0

はそれを修正するようで、なぜ何のアイデア:

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

は、実際に(などsetProfile、setVersion、)上記の基本的myFormatで何かを変えるには、それを修正するようです。だからおそらくこれがランダムに修正されるバグでしょう。 – Thomas

関連する問題