5

OpenGL を使用して、非常に多く (数万) の画像を画面外にレンダリングする必要があります。
私は Windows で実行しており、QT をフレームワークとして使用しています。解決策はWindowsのみですが、実際には問題ではありません。

私が Google を使用して見つけたものから、これを行うための多くのオプションがあります。 この記事はかなり古いようですが、いくつかの方法を提案しています。そのうちの関連するものは次のとおりです。

  • Windows 固有 -CreateDIBSectionテクスチャを使用して何らかの方法でバインドします。
  • 私のカードでサポートされていると思われる pbuffers 拡張機能を使用します。

このスレッド(メッセージ 6) は、これを使用してこれを行う QT 固有の方法を提案しています。QGLWidget::renderPixmap

私の質問は、どれが最速の方法でしょうか? pbuffers は、ハードウェア上で実行されることが保証されているため、最も安全な方法のようですが、CreateDIB メソッドを使用していないため、ハードウェアも通過しますか? QT法はどうですか?これにはコンテキスト作成の問題があるようです。確かに、作成するすべての画像に対して新しいコンテキストを作成したくはありません。
これで良い経験をした人はいますか?


EDIT : コメント
への回答 - まったく変わらない一定のシーンがあり、さまざまな視点からレンダリングしています。今のところ、画像はユーザーに返され、CPU によって処理されます。将来的には、GPU で処理される可能性があります。

4

1 に答える 1

8

FBOを使用します。高速で移植性があり、pbuffers よりもはるかに使いやすいです。

編集: 最高のパフォーマンスを得るには、2 つの異なる FBO 間でレンダリングを交互に行います。

  1. A にレンダリング
  2. Bにレンダリング
  3. A から読み返し、処理する
  4. A にレンダリング
  5. Bから読み返す
  6. 後藤2

このようにして、1 つの FBO を読み戻し、GPU が別の FBO に並行してレンダリングしている間にそれを処理することができます。

于 2008-10-18T03:30:22.673 に答える