- お知らせ -
  • 当wikiのプログラムコードの表示を直してみました(ついでに長い行があると全体が下にぶっ飛ぶのも修正)。不具合があればBBSまでご連絡下さい。

OpenGL

はじめに Edit

OpenGLでオフスクリーンレンダリング、つまり、見えない画面に描画して、その結果をあれやこれ、例えばBitmapに保存したり、テクスチャーに描画してもう一回描画してみたり、固定機能でポストエフェクトしてみたり、いろいろする方法。

適当まとめ Edit

オフスクリーンレンダリングする方法はいくつかあるようです。
適当まとめ。

たぶんこの4つの方法があると思います。

  • PFD_DRAW_TO_BITMAP でDIBに描画
    PIXELFORMATDESCRIPTOR構造体に PFD_DRAW_TO_BITMAP を設定してウインドウのHDCの変わりにBitmap(DIB)のHDCを使う。後はウインドウの描画と同じように。wglMakeCurrentしていざ描画って感じだろう。


    ※注意点:DelphiでTBitmap使う場合は、Delphi/TCanvas/Canvas.Handleを破棄されないようにする方法を考慮してください。


    特徴:
    • ハードウェアアクセラレーションが使えないらしい orz
  • 一旦描画して、glReadPixelsで画像のメモリイメージをゲット
    • VRAM→システムメモリのコピーなので、重い環境だと激しく重い。
      Geforce 6800のデスクトップPC環境(WinXP SP2)でなぜか使いものにならないくらい激重 orz
  • pbuffer拡張を使う
    すべての環境で動くとは限らない
  • FBO(Frame Buffer Object)拡張を使う
    すべての環境で動くとは限らない
  • glCopyTex[Sub]Image2D
  • render texture拡張
  • PBO(Pixel Buffer Object)拡張

詳細はググってください。そのうち詳細解説します。

高速でどこでも使える方法ってないのかなー。


No comment. Comments/OpenGL/オフスクリーンレンダリングする方法?

Name:

Front page   Edit Freeze Diff Backup Upload Copy Rename Reload   New Pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2008-11-08 Sat 21:36:14 JST (4046d)