2016-05-18 12 views
-1

私はウィンドウでQt5.4.2を使用しています。私はQOpenGLWidget継承されたウィジェットを実装しようとしています。 ウィンドウは、はっきりとしっかりとレンダリングできる必要があります。つまり、ユーザーはプログラム内の2つのレンダリングを切り替えることができます。QOpenglWidget透明度の変更に関する黒い画面

Depth_testでプログラムを起動すると、うまく動作します。プログラムをブレンドして起動しても正常に動作します。しかし、実行時の透明度を変更すると、黒いウィンドウが表示され、depth_testに戻ってきます!そしてブレンドに戻ったときもう一度普通です したがって、depth_testの透明度を変更すると問題が発生します。

古いQGLWidgetで同じことを試しました。完全に動作するので、黒いウィンドウはありません。私はGL_CULL_FACEを有効にした場合:次も

if (/transparent or not/) 
{ 

    glDisable(GL_DEPTH_TEST); 

    glEnable(GL_BLEND); 
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 


} else 
{ 
    glDisable(GL_BLEND); 
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
    glEnable(GL_DEPTH_TEST); 


}update(); 

興味深い 私は黒いウィンドウを得たが、私は透明に戻ったとき、私はまた、半分黒のウィンドウを(対角線が分離された)です。

答えて

0

Ok、 最後に私は答えを得ました。 私は最初に書きます:

doneCurrent(); makecurrent();

関連する問題