UIImage を使用して、32x32 ブロックからゲーム マップをレンダリングしています。コードは次のとおりです。
for( int x = 0; x < rwidth; ++x)
{
for(int y = 0; y < rheight; ++y)
{
int bindex = [current_map GetTileIndex:x :y];
CGPoint p;
p.x = x * tile_size_x;
p.y = y * tile_size_x;
[img_list[bindex] drawAtPoint:p];
}
}
これにより、約 150 個のタイルがレンダリングされます。私の問題は、このコードを実行すると、レンダリング時間が 1 秒あたり 2 ~ 3 フレームになることです。
iPhone はフィル バウンドだと思っていましたが、強制的に bindex = 1 にすると (つまり、同じブロックを 150 回レンダリングすると)、フル フレームレートになります。
異なる UIImage からレンダリングするのにそれほどコストがかかるとは信じられません。
誰かが私が間違っていることを教えてください...
ああ、CGImageCreateWithImageInRect を使用してより大きなテクスチャ ページから作成したイメージ リストについて言及するのを忘れていました。
ありがとうリッチ