1

3D アクセラレーションを備えた 2D ライブラリを作成していますが、古いハードウェアで効率的に実行できるようにしたいと考えています。ターゲットモードがサポートしていないオプション/機能を非表示にするための typedef の可能性があります。(エミュレーション機能がオンになっている場合もあります)

古いハードウェアの機能にはどのようなものがありますか? ここに私が知っている質問と事柄のリストがあります。

  • タイル、これはサポートされません。古いため、私のライブラリはピクセルアクセスをサポートします
  • スクロール付きの単一ピクセル バッファ。例 GBA
  • 複数のサーフェスとサーフェス間のクイック ブルト (ストレッチなし)
  • 複数のサーフェスとサーフェス間のクイック blt とストレッチ (これはエミュレートされたのでしょうか? HW ストレッチ画像はありますか?)
  • HW ピクセル フィル (DX でオプションを見たと思いました)
  • HW透明色? (DX仕様で見たような透明感のある色)
  • 古いテクスチャは 2 の累乗でした。幅は高さと同じ 2 の累乗である必要はありませんか? (例 64x256)、それらが同じである必要がありますか?
  • テクスチャ、新しいハードウェアでは任意の幅と高さを持つことができます (または、これは嘘ですか?)
  • テクスチャはクレイジーなフォーマットにすることができます (ARGB 8888、ABGR 8888、ABGR 2 10 10 10)

また、テクスチャ トゥ テクスチャ ブリットを行うことはできませんか? HWのテクスチャAからBへの60x40のコピーのように?また、テクスチャをパレットに入れることはできますか? (私はこれをサポートしません) そして最後に、シェーダーについて覚えておく必要があります 8)

他に何が欠けていますか?

4

1 に答える 1

2

どの 3D アクセラレーションについて言及していますか? OpenGL 互換ハードウェアの場合:

  • テクスチャは 2 の累乗である必要があり、幅と高さは任意の 2 の累乗にすることができます。
  • 2 の累乗制約のないテクスチャは、テスト可能な openGL 拡張機能で有効になります (ほとんどすべての新しいハードウェアに存在します)。
  • OpenGL ではいくつかの異なるテクスチャ フォーマットが標準化されていますが、任意のテクスチャ フォーマットを持つ拡張機能を知りません。

約 2D:

  • 通常のハードウェア 2D アクセラレーションはブリッティングをサポートしますが、ストレッチはサポートしません。ストレッチは「ビデオアクセラレーション」として利用できます。たとえば、X11 では xv 拡張機能を使用してストレッチを高速化できますが、YUV 色空間でのみ使用できます。
  • 非常に高速な画像描画操作については、Imlib2 をチェックしてください。すべてをソフトウェアで行いますが、非常に高速です。3D ハードウェア アクセラレーションが利用できない場合は、おそらく正しい方法です。2D ハードウェア アクセラレーションはパフォーマンスが異なります。たとえば、X11 RENDER アクセラレーションはしばしば Imlib2 に打ち負かされます。http://docs.enlightenment.org/api/imlib2/html/

注目すべき興味深いプロジェクトは、HW 2D アクセラレーションを多用しようとする DirectFB かもしれません: http://www.directfb.org/

于 2008-11-17T22:53:25.307 に答える