2

以前のプロジェクトを新しい Qt5 OpenGL クラスに移植しようとしています。FBO を使用してテクスチャにレンダリングしたいと考えています。前のコードでは、FBO オンデマンドにアタッチした複数のテクスチャを利用しました。そのため、特定のテクスチャ オブジェクトをアタッチしてレンダリングを実行し、別のテクスチャをアタッチして別の操作を実行し、出力を新しくアタッチされたテクスチャにレンダリングする、などを行います。

Qt5 OpenGL クラスを使用してこれを行うにはどうすればよいか疑問に思っていました。たとえば、特定のQOpenGLTextureオブジェクトをにアタッチしQOpenGLFrameBufferObjectてレンダリングできるようにする方法がわかりません。texture()方法と方法があることがわかりますtakeTexture()。しかし、どちらもテクスチャ ID を返すだけです。また、アクティブなテクスチャ ユニットを変更するにはどうすればよいですか? たとえば、シェーダー プログラムで 2 つのテクスチャからサンプリングしたいとします。そのため、2 つのテクスチャを異なるテクスチャ ユニットにバインドする必要があります。

明確にするために、私が新しい API で抱えている主な問題は、オブジェクトQOpenGLFrameBufferObjectを返すメソッドが見当たらないことです。メソッドとandメソッドQOpenGLTextureしかありません。from から返されたを使用して を構築できたと思います。しかし、それが効率的かどうかはわかりません。toImage()texture()takeTexture()QOpenGLTextureQImagetoImage()

texture()とについてtakeTexture()は、新しいクラスを使用してそれらの戻り値をどのように使用できるかわかりません。

4

2 に答える 2

0

QOpenGLFramebufferObject の複数のレンダー ターゲット (MRT) をサポートするために、Qt バグトラッカーに機能要求を追加しました。現在進行中で、コードレビューのみが保留中のようです。

https://bugreports.qt.io/browse/QTBUG-39235

今後の Qt バージョンの変更ログにご期待ください。

于 2015-06-16T09:46:34.577 に答える