SDL プログラムを作成していますが、長方形の幅を取得する必要がある場合があります。私がこのようなことをすると:
int VideoWidth = Video.Screen.Width; //Expensive operation
int VideoHeight = Video.Screen.Height;
int ChunksRendered = 0;
foreach (Chunk c in Chunks)
{
if (c.X + 256 + DeferredX > 0 && c.X + DeferredX < VideoWidth)
{
if (c.Y + 256 + DeferredY > 0 && c.Y + DeferredY < VideoHeight)
{
BlitSurface.Blit(c.Render(ref Textures, ref BlitSurface), new Point(c.X + DeferredX, c.Y + DeferredY));
ChunksRendered++;
}
}
}
私のマシンでは約 550 FPS が得られますが、これを行うと:
int ChunksRendered = 0;
foreach (Chunk c in Chunks)
{
if (c.X + 256 + DeferredX > 0 && c.X + DeferredX < Video.Screen.Width)
{
if (c.Y + 256 + DeferredY > 0 && c.Y + DeferredY < Video.Screen.Height)
{
BlitSurface.Blit(c.Render(ref Textures, ref BlitSurface), new Point(c.X + DeferredX, c.Y + DeferredY));
ChunksRendered++;
}
}
}
私は約200 FPSしか得られません。プロファイリングすると、これが速度低下の原因であることは明らかですが、なぜこの変数を取得するのにそれほどコストがかかるのでしょうか?