だから、現在私はゲームを書いていて、画面いっぱい (1680x1050) の小さなテクスチャ (20x20) を持っています。私のプレーヤーは、すべてゲーム ループ内で、この背景の上を移動します。背景を静的にして一度だけ描画する必要がありますが、SDL_RenderClear はすべての領域を再描画するため、遅延が発生します。一度描画してから、プレーヤーのフィギュアで更新するにはどうすればよいですか?
2189 次
2 に答える
2
「一度描いてそのまま」というのはさすがにありませんが、キャラクターがいる背景の部分だけを描いて、新しいキャラクターを描く前に。
より詳細には、ヒーローが少しでも触れているすべての「ブロック」を描き、その上にヒーローを描きます。
次に例を示します。
//LocationX is the location of hero on the X axis
//LocationX /20 is the number of the first texture that is drawn on X axis
//LocationX +Width (width of hero) +20 (width of texture) this is the number of the last texture on X axis
//Now draw everything from first to last texture that is touched the hero (just calculate the Y axis the same way as X axis!)
for (int xxx = LocationX /20; xxx < LocationX +Width + 20; xxx++)
{
for (/*Do the same for Y axis*/)
{
draw(texture, xxx *20, yyy *20);
}
}
//Draw Hero here, the background is clear!
于 2013-11-29T07:12:51.573 に答える
1
文字通り答えると、SDL_RenderDrawRect
「画面の一部をクリアする」ために使用する必要があります。
ただし、背景にテクスチャがあるとおっしゃいましたが、RenderClear はテクスチャを描画しないため、この説明の何かが間違っているようです。
于 2013-11-29T10:12:42.950 に答える