Почему этот код рисования спрайтов в обратном порядке? - PullRequest
0 голосов
/ 05 января 2012

У меня есть следующий фрагмент кода:

spriteBatch.Begin(SpriteSortMode.FrontToBack, BlendState.AlphaBlend, null, null, null, null, cam.TransformMatrix);
spriteBatch.Draw(_comicBackground, workspace, Color.AliceBlue);
foreach (LayoutField lf in comicStrip.LayoutFields)
{
    spriteBatch.Draw(_layoutFieldBackground, new Rectangle(lf.PosX, lf.PosY, lf.Width, lf.Height), Color.White);
}
spriteBatch.End();

, но независимо от SpriteSortMode (FrontToBack | BackToFront) фон всегда отображается поверх результатов цикла foreach, покрывая мой макет в результате.

Это не шоу-стопор, поскольку я могу рисовать свои спрайты в обратном порядке, но я бы предпочел держать их в том порядке, в котором они должны быть нарисованы на экране.

1 Ответ

4 голосов
/ 05 января 2012

Режимы сортировки FrontToBack и BackToFront требуют указания значения глубины спрайта в вызовах Draw(); см. layerDepth параметр здесь . Если вы хотите рисовать спрайты в порядке, в котором вы делаете вызовы Draw(), используйте SpriteSortMode.Deferred или SpriteSortMode.Immediate.

...