2

Cocos2d-x でプログラムしたマルチプラットフォームの iOS/Android ゲームがあります。デバイスの解像度に応じてスケーリングされる使用する画像のセットは 1 つだけです (私は高解像度デバイスの後でのみ使用します)。たとえば、すべての画像は iPad 用ですが、Galaxy S を使用している場合、画像の位置とスケーリングは GalaxyS_screenWidth/iPadscreenWidth の影響を受けます。

これは、すべての Android デバイスと iPad、iPad2、および古い iPhone で問題なく動作しますが、Retina iPhone では問題があります。iPhone 4 では、すべての画像が非常にピクセル化されたように見えます。これは、画像が iPhone の非網膜解像度にスケーリングされてから、画面いっぱいに拡大された結果です。

Retina モードを有効にしてみましたが、画像が意図したサイズの半分になり (ポイントを使用する get winsize() の使用が原因である可能性があります)、手動でスケーリングすると他の種類の問題が発生します。オプションや属性をいろいろいじってみましたがだめでした。どうすればいいですか?

編集: テキストが自動的に縮小されてから拡大され、ピクセル化されて表示されるため、これはグラフィックスの問題だけではありません。

EDIT 2:フォントはビットマップなので、悪いです。しかし、デフォルトですべての画像がすでに網膜であるため、網膜を使用したくありません。私の画像はすべて iPad 用に設定されているので、iPhone 4 用に少し縮小します。これは Android フォンで動作します。

たとえば、次の方法で取得した画面解像度に応じて、画像がありますgetwinsize()

現在の解像度幅が 1024 の場合、画像は同じままです。現在の解像度幅が 900 の場合、画像は 900/1024 でスケーリングされますが、問題ありません。デバイスが iPhone 4 の解像度の幅が 480 の場合、画像は 480/1024 でスケーリングされ、cocos2d-x は自動的に結果の画像を 2 でスケーリングし、ピクセル化します。を使ってgetwinsizeinpixelsみたり、画面サイズを増やしてみたり、いろいろ試してみましたが、コードの多くをやり直さない限り、すぐに使えるものは何もありませんでした。

問題は、どうすればいまいましいエンジンに iPhone 4 を解像度 960x640 の Android フォンとして扱わせることができるかということです。

4

3 に答える 3

1

SI はその真相を突き止めることができなかったので、ハックを採用しました。Retina ディスプレイを有効にしてから、テキスト以外のコードをすべて x2 にスケーリングしました。ばかげているように聞こえますが、うまくいき、ピクセレーションはなくなりました。私を助けようとして時間を割いてくれたすべての人に感謝します。

于 2012-07-31T06:36:15.290 に答える
0

Retina モードを有効にしてみましたが、画像が意図したサイズの半分です

Retina サポートを有効にすると、cocos2d は提供されたファイル名に @"-hd" を追加して画像を取得します。このような画像は、デバイスの解像度を最大限に活用するために縮小できるように、「視覚的な」サイズ (iOS 用語では、ピクセルとポイント) の 2 倍になることを意図しています。

CCDirectorIOS クラスを見ると、これを処理するいくつかのメソッド、特にscalingFactor を処理するメソッドがあることがわかります。機能させるためにどのような変更を行う必要があるかはわかりませんが、これらのメソッドに足を踏み入れてさまざまなオブジェクトの値を調べると、特定のケースに合わせて cocos2D のデフォルトの動作を変更する方法が見つかるかもしれません。

これが複雑に思える場合はCC_RETINA_DISPLAY_FILENAME_SUFFIX、cocos2d が Retina iPhone 用の特別な名前のファイルを検索せず、通常のファイルのみを使用するように を変更してみてください。

たとえば、すべての画像は iPad 用ですが、Galaxy S を使用している場合、画像の位置とスケーリングは GalaxyS_screenWidth/iPadscreenWidth の影響を受けます。

もう 1 つの方法として、 を使用せずwinSizeに , butを使用winSizeInPixelsして、縮小するときにポイント解像度まで下げますが、ピクセル解像度 (ポイント解像度の 2 倍) まで下げます。

お役に立てれば。

于 2012-07-30T11:18:59.733 に答える