PaintGLを呼び出さずにレンダリングルーチンを呼び出したいので、Qt OpenGL実装のモダンなルーチンを使ってマルチパスエフェクトをレンダリングしようとしています。 :PaintGLを使わないQOpenGLFramebufferObjectへのレンダリング
for i=0 i<npasses i++
glwidget->renderlayer i
glwidget->repaint //this calls PaintGL
問題は、私はPaintGLのうちレンダー呼び出す機能している場合、すべてが狂っていることであり、それは大丈夫です代わりに、一方のレンダーのfuncionの私glwidget(つまりQOpenGLWidgetから継承)に私の全体のアプリの上に描かれますPaintGLの内部からしか呼び出されないので、期待どおりに動作します。
これについてのヒント?そのオフスクリーン表面に
QOpenGLWidget* widget = ...;
QOpenGLContext* ctx = widget->context();
QOffscreenSurface surface;
surface.setFormat(ctx->format());
surface.setScreen(ctx->screen());
surface.create();
その後再ターゲットとあなたのGLコンテキスト、あなたのFBOのレンダリングを行い、最終的に再ターゲット:
は、あなたがこのようなQOffscreenSurface
を作成することができ、事前
(http://doc.qt.io/qt-5/qopenglframebufferobject。 html#bind)をそのコンテキストに追加します。 –