2016-04-02 9 views
0

まず、私は比較的新しいです。私は、SDL2とSFML2の両方のライブラリをゲーム開発者に提供することを楽しみにしています。 (と他のもの)。SDL2/SFML2のソフトウェアとハ​​ードウェアレンダリング

ここで私は、SDL2とSFML2の両方がOpenGL対応のコンテキストを作成できることを知っています。これにより、OpenGLグラフィックスプログラミングを行うことができます。

しかし、オンラインでは、「SDL 1.2はソフトウェアアクセラレーション、SDL2およびSFML2はデフォルトでハードウェアアクセラレーションが行われています」という声が寄せられました。ソフトウェアレンダリングはCPUだけを使ったグラフィックスだと私は知っています。ハードウェアレンダリングはグラフィックカード/パイプラインを使用します。

だから私の質問は、これらのゲームのライブラリに関して、次のとおりです。

パート1:誰かが1がデフォルトacc.byソフトウェア/ハードウェアであると言うとき、彼は何を意味するのでしょうか? SFML2がハードウェアであるとすれば、それは(私の推測)ですか?デフォルトでは、コード内でハードウェアレンダリングプログラミングを明示的に実行していなくても、バックエンドパイプラインとしてのハードウェアレンダリングを使用して、基本的な2次元グラフィックスでさえも実行します。

パート2:それが本当であれば、これらのライブラリにソフトウェアのアクセラレーション/レンダリングを設定するオプションはありますか?

パート3:これらの2つのライブラリ(SDL2とSFML2)のどちらが全体的なパフォーマンス/スピードが優れていますか?

質問があれば、お答えして謝罪してください。

答えて

0

SFMLについては何も言えませんが(ほぼ確実なことはほとんどありません)、SDLの場合はあなたの言う通りです。 SDL1では、2次元描画が表示面に直接ブリッティングとして実装され、このサーフェスが表示されます。ほとんどの場合ソフトウェアです(わずかなhwアクセラレーションは可能ですが)。 SDL2にはSDL_Rendererとテクスチャ(GPU側のイメージまたはレンダーターゲット)があり、レンダラーを使用する基本図はとなり、1つまたは別のバックエンドによって高速化されます。どのバックエンドが選択されるかは、プログラムが実行するシステムとユーザー設定に依存します。それはあなたが明示的にsoftwareドライバを使用するSDL_CreateSoftwareRenderer、またはhint SDLを呼び出すことにより、いずれかのソフトウェアレンダラを使用することができます

..アンドロイド/ IOS、などについてopenglesを、Linux用のOpenGLのためにデフォルトのWindowsのためのD3D(まだOpenGLを使用することができます)です環境変数をSDL_RENDER_DRIVERに設定してオーバーライドすることもできます。

3Dグラフィックス用にopenglを使用する場合は、通常のようにOpenGLコンテキストを使用してそのすべてを無視してウィンドウを作成し、SDL_Rendererを使用しないでください。

+0

「ヒント」と「SDL_RENDER_DRIVER」の部分では、ソフトウェアをレンダリングするためのソフトウェアレンダリングの代わりに、そのシステムでOpenGL/D3Dを呼び出すことを意味するのでしょうか(例:OpenGLのMesaドライバ、D3DのSwiftshader) – user2873330

+0

申し訳ありませんあなたのコメントを理解できません。基本的には、SDLにすべてのレンダリング機能(たとえば[SDL_RenderDrawLine](https://wiki.libsdl.org/SDL_RenderDrawLine))の異なる実装を使用するように要求します。 – keltar

関連する問題