WindowsでOpenGLをソフトウェアでレンダリングする必要があり、DLLを提供しないMesa3Dについてはすでに知っていますが、構築するのに苦労しています...利用可能な代替手段はありますか?
3 に答える
これは、高速化するOpenGLのバージョンによって異なります。ニーズに応じて、いくつかの選択肢があります。私が知っているものを以下にリストしました:
OpenGL 1.0&1.1
Windows(Windows NT 3.5以降)には、最初からOpenGLソフトウェアの実装が実際に含まれています。他のソフトウェアラスタライザーをインストールしていない場合は、これがデフォルトの実装になります。Microsoftソフトウェアラスタライザーは、プラットフォームに応じてOpenGL 1.0または1.1のいずれかをサポートしますが、それより新しいものは加速しません。目的のOpenGLバージョンが1.0または1.1でカバーされている場合(ただし、可能性は低いですが)、ソリューションで十分です。デフォルトのWindowsOpenGLソフトウェア実装がOpenGL1.0または1.1サポートを通じてOpenGLES1.xフレームワークをどの程度カバーしているかはわかりません。
OpenGL 1.4
さらに、Windows Vistaには、OpenGLをDirect3Dに変換できるエミュレーションレイヤーが含まれていました。したがって、OpenGL1.4までをサポートします。さらに、これは、Windows Vista(およびそれ以降?)ランタイムがOpenGLSCのほとんどの部分を加速する可能性があることを意味するはずです。私はこのエミュレーターを自分で使用したことがなく、それについて聞いて非常に驚きましたが、Windows環境でこれらの古いフレームワークの1つを実行しなければならない人にとっては興味深いかもしれません。標準のWindowsOpenGLソフトウェアラスタライザー(OpenGL 1.0または1.1)もWindowsVista以降に含まれていることに注意してください。
OpenGL ES 2.0
さらに、OpenGL ES2.0の呼び出しをDirectX9および11に変換することにより、WebGLおよびOpenGL ES 2.0を高速化するANGLEプロジェクトがあります。彼らの開発ノートには、OpenGLES3.0ソリューションが開発中であることも記載されています。ANGLEを使ったことがないので、評決を下すことはできません。
OpenGL 3.1
上記に加えて、Mesa 3D(OpenGL 3.1までをサポート)は3つのソフトウェア実装を備えています。
- スワスト
- ソフトパイプ
- llvmpipe
swrast(元のMesaプロジェクトソフトウェアラスタライザー)とsoftpipe(リファレンスドライバー)についてはほとんど知らないので、これらについては説明しません。3番目の実装であるllvmpipeは、おそらく最も興味を引く可能性のあるものであり、マルチスレッドとJITコンパイルを使用して、ネイティブ命令とSIMD命令によるシミュレーションを高速化する高速ソフトウェア実装です。
私は以前、 TransgamingのSwiftshaderを制作プロジェクトに使用しましたが、それは素晴らしかったと言わざるを得ません。少し費用がかかりますが、素晴らしいです。
私が検索した限り、他の唯一のオプションはWebGLソフトウェアレンダラーを使用することです。これは現在、Chromeのみがサポートしています。Direct3Dには、リファレンスドライバー(非常に不安定です)とSwiftshaderがあります。これは優れていて高価です。
さらにいくつかの頭痛の種の後、私はなんとかWindows用のMesa3Dを構築することができましたが、それをまだある程度サポートしている古いバージョンだけでした。少なくとも、それは素晴らしいパフォーマンスを持っています。