2016年3月5日土曜日

Mesa 3D Graphiccs Library (OpenGLのオープンソース実装)を試す

はじめに


OpenGLアプリをリモートデスクトップで動かすとまともに動かなかったりします。
以前調べたときはリモートデスクトップで起動するとOpenGLがWindows標準のソフトウェアレンダラーを使用してしまうとの書き込みがありました。つまりOpenGLのバージョンが1.1相当になってしまうようです。

仮想環境でも一般的にOpenGLのサポートは弱いですよね。1年前くらいにParallelsでWindows使ってましたが、OpenGL 2.0くらいでした。

普通にクライアントPCで起動する際にもGPUドライバの不具合があって表示に不具合がでることがあります。

そのような時、遅くても確実に動くソフトウェアレンダラーを使用したいことがあります。Windows標準のソフトウェアレンダラ?はOpenGL 1.1でさすがに機能少なすぎるので、

Mesa 3D Graphics Library

を試してみることにしました。

Mesaとは


OpenGLのオープンンソース実装です。昔はLinux用のグラフィックスアクセラレータのドライバとかなかったのでLinuxでよく使われていた気がします。Windowsでは上記の必要がないとなかなか使わないかもしれません。

ビルドはなかなかハードル高いのでこちらからダウンロードしました。
https://sourceforge.net/projects/msys2/files/REPOS/MINGW/x86_64/
mingw-w64-x86_64-mesa-11.0.5-1-any.pkg.tar.xz


Mesaの実行


ダウンロードしたファイルを展開するとopengl32.dllがありますので、アプリケーションと同じフォルダに置くだけです。

glGetStringで情報を取ってみるとこんな感じでした。

GL_VENDOR : VMware, Inc.
GL_RENDERER : Gallium 0.4 on llvmpipe (LLVM 3.7, 256 bits)
GL_VERSION : 3.0 Mesa 11.0.5 (git-27c6440)

GL_SHADING_LANGUAGE_VERSION : 1.30 

手元のOpenGLプログラムはOpenGL 3.3くらいの機能を使っていたので、いろいろ動かない箇所がありました。ジオメトリシェーダどうしよう。。

Mesaの実行速度


とりあえず実行速度だけ試しました。比較対象は下記の環境。
GL_VENDOR : NVIDIA Corporation
GL_RENDERER : NVS 4200M/PCIe/SSE2
GL_VERSION : 4.5.0 NVIDIA 354.13

GL_SHADING_LANGUAGE_VERSION : 4.50 NVIDIA 

CPUは型番記録し忘れましたが、core i7の3000番台で2コアのやつです。

10万triangles程度のデータを表示してみると、
Mesa : 約13fps
Nvidia : 約130fps

Mesa思ったより速いですね。緊急用には十分か。


0 件のコメント:

コメントを投稿