1

浮動小数点計算の内部形式として GL_FLOAT を使用して、framebufferobject にレンダリングする必要があります。次のようなネイティブ OpenGL 呼び出しを使用してこれを実現する方法を知っています。

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, width, height,
             0, GL_RGBA, GL_FLOAT, NULL);

QPainterを使用して FBO にレンダリングするには、QGLFramebufferObjectが必要です。ただし、 QGLFramebufferObject はタイプを設定することを許可せず、テクスチャの内部フォーマットとフォーマットのみを設定します(私の場合はカラーアタッチメントで使用されます)。

Qt 4.8 で QGLFramebufferObject で浮動小数点精度を使用する方法はありますか?

Qt に何らかのパッチを適用して再コンパイルできることはわかっていますが、それは面倒であり、あまりエレガントではありません。独自の FramebufferObject クラスを作成することも検討しましたが、QPaintDevice から派生させて、カスタム QPaintEngine を提供する必要があります。Qtには明らかにそのためのペイントエンジンがあるため、良い解決策ではありませんが、アクセスできません。

4

1 に答える 1

0

内部フォーマットは、テクスチャを浮動小数点にする唯一のものです。例えば:

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height,
         0, GL_RGBA, GL_FLOAT, NULL);

これは浮動小数点テクスチャではありません。これは、コンポーネントごとに8ビットの符号なし正規化テクスチャです。それがGL_RGBA8意味するからです。

したがって、の内部形式をQGLFramebufferObject使用可能な浮動小数点形式の1つに設定するだけです。

于 2012-10-13T18:02:40.097 に答える