Windows XP以降のバージョンのWindowsで、ハードウェアアクセラレーションを最大限に活用して、2Dアンチエイリアスベクトルおよびビットマップイメージのスケーリングと合成をリアルタイムで実行する場合、GDI+またはDirectX9.0cを使用する必要がありますか?(実際には、WindowsXPとWindows7は重要ですが、Vistaでのパフォーマンスについては心配していません。)
アプリケーションがクロスプラットフォームではない(そして決してそうなることはない)ことを考えると、SDLを使用することにメリットはありますか?SDLを使用すると、基盤となる描画APIのパフォーマンスが向上するものに簡単に切り替えることができるのではないかと思います…</ p>
DirectX 9.0cで2D画像のスケーリングと合成を行うためのドキュメントはどこにありますか?(DirectDrawのドキュメントを見つけましたが、DirectX 7以降は非推奨になっていることを読みました。ただし、Direct2DはDirectX 10まで使用できません。)
中スペックから低スペックのPC(つまり統合グラフィックス)のWindows XPで、スケーリングと合成がハードウェアアクセラレーションされることを合理的に期待できますか?そうでない場合は、GDI+とDirectX9.0cのどちらを使用するかは重要ですか?
2 に答える
GDI+は使用しないでください。それはソフトウェアですべてを行い、ソフトウェアでのパフォーマンスには良くないレンダリングモデルを持っています。あなたは他の何でもするほうがよいでしょう。
Direct3DまたはOpenGL(クロスプラットフォームのより完全なAPIが必要な場合はSDL経由でアクセスできます)は、それをサポートするハードウェアで最高のパフォーマンスを提供します。Direct2Dは同じボートにありますが、WindowsXPでは使用できません。私の理解では、少なくともIntelの統合GPUの場合、ハードウェアは変換や作成などの単純な操作を実行でき、これらのGPUの問題のほとんどは、機能とパフォーマンスに対する要求が高いゲームにあります。 ATI/Nvidiaカード用に最適化されています。Direct3Dがビデオカードでサポートされておらず、ソフトウェアにフォールバックしているマシンを何らかの理由で見つけた場合は、問題が発生している可能性があります。
SDLは、OpenGL以外の描画にWindowsでDirectDrawを使用していると思います。どういうわけか、DirectDrawはWindowsの最新リリースのソフトウェアですべての操作を行うという印象を受けました(そして、DirectDrawがどのように使用されるかを考えると、win9xの時代以来、それほど重要ではありませんでした)が、それを確認することはできません。
理想は、レンダリングにDirect3DまたはOpenGLを利用できるクロスプラットフォームのベクターグラフィックライブラリですが、AFAICTではそのようなものは利用できません。CairoグラフィックライブラリはWindowsでの高速化に欠けており、MozillaはAzureと呼ばれるプロジェクトを開始しました。このプロジェクトは明らかにそれを備えていますが、プロジェクト外で使用するようには設計されていないようです。
私はこれを見つけました:DirectX8での2Dレンダリング。
MicrosoftはDirectX7の後にDirectDrawを削除したため、すべての2D描画が3DAPIを使用して行われることを期待していたようです。これは、私が探していたドキュメントを完全に見つけることができなかった理由を説明します。
この記事はこれまでのところ有望に見えます。
もう1つ:3D世界での2Dプログラミング