OpenGL について詳しくないため、誤りがあったらすみません。
GLFW(OpenGL)にてCPU, GLSLにてGPUを司っているのか?
OpenGL は、ライブラリではなくAPI仕様を規定しているだけなので、「OpenGL を使う」といった場合は実際はその仕様にしたがって実装されたライブラリを使っていることになります。
- Ubuntu: Mesa3D
- Windows: Nvidia などグラフィックベンダーが提供するドライバ
それらのライブラリが GPU が利用できる部分は GPU で行うようになっており、ライブラリの利用者側ではどの処理が GPU で行えわれるかを意識する必要はないはずです。
少し語弊があるかと思いますが、ウィンドウ作成やダブルバッファリングのバッファ入れ替えをCPUで司り、シェーダー等をGPUで処理しているのかということです。
OpenGL は主に描画に関する API しか提供していないため、ウィンドウ作成やダブルバッファなど OpenGL の担当外の部分は、GLFW や Qt などのライブラリを合わせて使うことになります。
また、もし1.が正しかった場合、ダブルバッファリングのバッファ入れ替えと各バッファへの描画をそれぞれCPUとGPUで分けているからこそスムーズな処理が可能であり、CPUの他にGPUを必要としている理由なのか?
さきほど説明したとおり、レンダリングをすべて CPU で行うことも可能ではありますが、最近のコンピューターグラフィックスでは何百万というポリゴンを扱うことが当たり前なので、並列に大量のデータを計算する必要がある場合、GPU が有利です。
そのため、最近ではコンピューターグラフィックスの他、Deep Learning の計算などにも GPU が使われるようになっています。
まとめると
- OpenGL でどの処理を GPU/CPU で行うか決められているわけではない。
- GLFW はウィンドウ管理などを行うライブラリ。CPU で実行される。
- GPU が必要なのは、CPU でも同じ処理を行えるが、GPU を使ったほうが圧倒的に高速であるため。
追記 (Windows の場合)
Windows の場合は、グラフィックベンダーが提供するドライバを基本的には使うようです。
How Does It Work On Windows?
Windows の場合、
- OpenGL を使うアプリケーションをコンパイルするには、opengl32.dll をリンクする。
- opengl32.dll は、グラフィックベンダーのドライバを探して、ロードする。(例: Nvidia なら nvoglv32.dll)
- opengl32.dll 自体はソフトウェア実装の OpenGL 1.1 のみ提供する。ドライバが見つからないときは、この OpenGL 1.1 しか使えない。
- それより新しいバージョンの OpenGL を使いたい場合は、ドライバが必須
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/09/19 10:52
2018/09/19 11:26