次のプロジェクトに深く入り込む前に、アドバイスを求めています。現在 iOS でサポートされているさまざまな解像度 (Retina、非 Retina iPhone、および 3 つの iPad すべて) をすべてサポートしたいと考えています。
開発者がこれを行う最も一般的な方法は何ですか? 同様の質問がなされるのを見たことがありますが、特定の性質に関するものです。完全なパッケージを探しています。すなわち。さまざまな解像度のビットマップ フォント、画像などをサポートしたいと考えています。
デバイス固有のスイッチですか、それとも if ステートメントは標準ですか?
高度なヘルプをありがとう。
え
編集:Appleからこれを見つけました:
Blockquote アプリケーションがレンダリングに OpenGL ES を使用している場合、既存の描画コードは変更なしで引き続き機能するはずです。ただし、高解像度の画面に描画すると、コンテンツはそれに応じて拡大縮小され、ブロック状に表示されます。ブロック状の外観の理由は、OpenGL ES renderbuffers をバックアップするために使用する CAEAGLLayer クラスのデフォルトの動作が、他の Core Animation レイヤー オブジェクトと同じであるためです。つまり、スケール ファクターは最初は 1.0 に設定されているため、Core Animation コンポジターは高解像度画面でレイヤーのコンテンツをスケーリングします。このブロック状の外観を避けるには、OpenGL ES レンダーバッファーのサイズを画面のサイズに合わせて大きくする必要があります。(より多くのピクセルを使用すると、コンテンツに提供する詳細の量を増やすことができます。
Blockquote 高解像度の描画を有効にするには、OpenGL ES コンテンツの表示に使用するビューの倍率を変更する必要があります。ビューの contentScaleFactor プロパティを 1.0 から 2.0 に変更すると、基になる CAEAGLLayer オブジェクトのスケール ファクターに一致する変更がトリガーされます。レイヤー オブジェクトをレンダー バッファーにバインドするために使用する renderbufferStorage:fromDrawable: メソッドは、レイヤーの境界にそのスケール ファクターを掛けて、レンダー バッファーのサイズを計算します。したがって、倍率を 2 倍にすると、結果のレンダーバッファーの幅と高さが 2 倍になり、コンテンツのピクセル数が増えます。その後、これらの追加ピクセルのコンテンツを提供するのはあなた次第です。
それで、私の更新された質問は、上記の倍率を2倍にする方法だと思いますか?
編集2:
私はほとんどそこにいます...
これを使用して、EAGLView 内でスケーリングしています。
// Adjust for retina displays
if ([self respondsToSelector:@selector(setContentScaleFactor:)])
{
self.contentScaleFactor = [[UIScreen mainScreen] scale];
}
今残っている唯一の問題は、起源がどういうわけか台無しになっていることです. 表示画像は解像度に応じてスケーリングされますが、より高い解像度では、画像は画面の中央から始まります。
助けてください!
編集3:解決!!!! 私はオリエンテーションで問題を経験していました。
翻訳が更新されていることを確認する必要があります。私はこれを使用しました:
glTranslatef( width / 2, height /2, 0);
glRotatef(-90, 0, 0, 1);
glTranslatef(-1 * (height / 2),-1 * (width / 2),0);
見てくれてありがとう。これが誰かに役立つことを願っています。