2011-09-07 12 views
6

私はOpenGLとC++で書かれたクロスプラットフォームであることを望むアーティストの会社のためにフルHD対応2Dエンジンを作成中です。フルHD 2DテクスチャメモリOpenGL

私がやってきた主な問題は、すべてのHDスプライトに対処する方法です。アーティストは24fpsでグラフィックスを描画し、pngシーケンスとしてエクスポートされます。私はファイルサイズを小さくするDXT5をロードするためには、DirectXヘッダーが必要なので、DDSに変換しました(理想的ではありません)。ゲーム内のいくつかのシーンは、一度に5または6のアニメーションスプライトを持つことができ、これらは200以上のフレームで構成されます。それぞれです。現在、ポインタの配列にスプライトをロードしていますが、圧縮テクスチャを使用してもロードに時間がかかりすぎて、かなりのメモリ(フルシーンでは約500MB)が使用されます。

私の質問は、このような大量のフレームを処理する方法に関するアイデアやヒントがありますか?

  • (私は不安があるPNGシーケンスを交換し、2次元の骨格アニメーションシステムを実装するフラッシュ
  • からのフレームを格納するためのswf形式を使用します。私はのthought'veをしたアイデアがいくつかありますジョイントが表示されています)

Castle Crashersのようなゲームは、すばらしいHDグラフィックスですばやく読み込みます。

+1

ディスクから読み込むには時間がかかりすぎるか、GPUにアップロードするには時間がかかりますか? – genpfault

+0

"Directxヘッダーをロードする必要があるため理想的ではありません" DDSをロードするためにDirect3Dヘッダーは必要ありません。 –

答えて

2

24 fps手描きのアニメーション?あなたはフレームレートを減らすことを考えましたか?映画品質のセルアニメーションでさえも、フル24 fpsで描画されることはめったにありません。 18fpsに下がっても、データの25%が消えてしまいます。

いずれにしても、は、の負荷時間が長いと指定していません。ハードディスクからメモリへの負荷が問題になっていますか、それともテクスチャ読み込みにメモリが問題なのでしょうか?あなたは頻繁にテクスチャデータのセットをGPUに入れ替えていますか?それとも、読み込み時にテクスチャをたくさん作っていますか?

ディスクのロードに問題がある場合は、ディスク上のテクスチャデータを圧縮してメモリに展開してください。 S3TCスタイルの圧縮は圧縮されていません。ハードウェアをテクスチャリングするのに使用できる圧縮技術になるように設計されています。通常は、zlib、bzip2、または7zなどの標準の圧縮ライブラリを使用して、サイズを小さくすることができます。もちろん、これは解凍する必要があることを意味しますが、CPUの方がハードディスクよりも高速になっているため、通常は全体的に勝ちです。

テクスチャアップロードの帯域幅に問題がある場合、その解決策はあまりありません。まあ、興味のあるハードウェアに依存します。関心のあるハードウェアがOpenCLをサポートしている場合は、いつでも圧縮データをGPUに転送してから、OpenCLプログラムを使ってオンザフライでGPUメモリに直接圧縮解除することができます。しかし、OpenCLサポートが必要な場合は、サポートできるハードウェアの最小レベルに影響を与えます。

2D骨格アニメーションをすばやく解除しないでください。オーディンスフィアのようなゲームは、各腕の位置のいくつかのバージョンを持つことによって、2Dスケルトンのより良いアニメーションを達成することができます。描かれるのは、それが取り付けられている身体の部分に最も近いものに一致するものです。彼らはまた、フレアされた衣服のような欠陥を隠すために巧妙な芸術を使用します。

+0

hmnnアドバイスをいただきありがとうございます。それは私の場合、テクスチャのアップロード帯域幅であると思われます。私はzlibを使用してテクスチャをパッケージ化し、さらにpngテクスチャを最適化するためにoptipngを使用しました。それは少し速くなりましたが、フレームレートを下げることに頼る必要があります。再度、感謝します! – GracelessROB

4

まず、すべてのプラットフォームがDXT5(モバイル専用)をサポートしているわけではありません。

それ以外では、zlibのようなものを使ってテクスチャを圧縮することを検討しましたか?テクスチャはかなり類似している可能性が高いため、圧縮率が大幅に低下します。この日および年齢では、プロセッサーの速度が遅いために減圧が安いので、ディスクからデータを取り出す時間を節約することは、減圧まで失われた時間よりはるかに役立ちます。

私はあなただったらそこから始めたいと思います。

+2

私が見た最良の圧縮ライブラリは+1です。 – Prime

+0

ほとんどの携帯電話は500MBのテクスチャデータを扱うことができないので、それらは彼には関係ありません;) –

+1

@Nicol:zlib圧縮とストリーミング。 – Goz