Windows プログラミング

ウインドウを作らずにOpenGLでレンダリングする方法

2017/12/04

とある事情で、OpenGLを使ったオフスクリーンレンダリング(ウインドウではなくメモリ上への描画)の方法を調べていたのですが、OpenGLに関するネット上のサンプルはfreeglutなどの補助ライブラリを使う方法ばかり…。

freeglutは初期化の時点でウインドウの作成が必須になるので、いわゆる「オンスクリーンレンダリング」となってしまい目的に合いません。まぁ、グラフィックライブラリだからウインドウがある前提なのは当たり前なのですが…(´・ω・)

あれやこれやと苦労した結果、ようやくウインドウを作らずにレンダリングする方法が分かったので、サンプルコードとして残しておこうと思います。

作成したサンプルコード

以下が作成したサンプルコードです。VisualStudio2017上で作ったものですが、おそらく古いバーションでも動くかと思います。

一部でOpenCVの関数を叩いていますが、これはレンダリング結果を画像として保存するためです。レンダリング自体にOpenCVは必要ありません。ちなみに、エラー処理などは入れてないので安全な動作は一切保証してません。参考にされる際はすべて自己責任でどうぞm(_ _)m

このコードを実行すると、以下のような画像がファイルとして保存されます。GUIウインドウへの描画などは一切行っていないので、オフスクリーンレンダリングができていることがわかります(・∀・)

ポイントとしては、OpenGLで使うコンテキストをゼロから作ってあげることなのですが、そこらへんを解説するとすごく長くなるので、以下の記事に別でまとめました。

コードの中身の詳細を知りたい方は、そちらの方もぜひ覗いてみてくださいm(_ _)m

ではではノシ

-Windows, プログラミング