Гаразд, я прочитав кілька статей, навчальних посібників та запитань з цього приводу. Більшість вказує на ту саму методику, яка не вирішує мою проблему. Мені потрібна здатність створювати напівпрозорі спрайти (текстури дійсно) і накладати їх на інший спрайт.
Я можу досягти цього дещо за допомогою знайдених зразків коду, але я не задоволений результатами, і я знаю, що є спосіб це зробити. У програмах мобільного програмування (BREW) ми зробили це в старій школі та фактично перевірили прозорість кожного пікселя перед рендерінгом.
У цьому випадку, здається, спрайт спрайту під ним змішується з альфаю над ним. Це може бути артефактом того, як я рендерую текстуру, але, як я вже говорив раніше, всі приклади вказують на цю одну техніку. Перш ніж піти далі, я продовжую вставляти зразок коду.
public void Draw(SpriteBatch batch, Camera camera, float alpha)
{
int tileMapWidth = Width;
int tileMapHeight = Height;
batch.Begin(SpriteSortMode.Texture,
BlendState.AlphaBlend,
SamplerState.PointWrap,
DepthStencilState.Default,
RasterizerState.CullNone,
null, camera.TransformMatrix);
for (int x = 0; x < tileMapWidth; x++)
{
for (int y = 0; y < tileMapHeight; y++)
{
int tileIndex = _map[y, x];
if (tileIndex != -1)
{
Texture2D texture = _tileTextures[tileIndex];
batch.Draw(
texture,
new Rectangle(
(x * Engine.TileWidth),
(y * Engine.TileHeight),
Engine.TileWidth,
Engine.TileHeight),
new Color(new Vector4(1f, 1f, 1f, alpha )));
}
}
}
batch.End();
}
Як ви бачите, у цьому коді я використовую перевантажений метод SpriteBatch.Begin, який, серед іншого, приймає стан змішування. Я майже впевнений, що це моя проблема. Я не хочу БЛІНТУВАТИ спрайт, я хочу, щоб вони були прозорими, коли альфа дорівнює 0. У цьому прикладі я можу встановити альфа на 0, але вона все одно відображає обидві плитки, а нижній z упорядкований спрайт відображається, знебарвлюється через змішування. Це не бажаний ефект, я хочу, щоб вищий з упорядкованим спрайтом зникав і не впливав на колір під ним таким чином.
Я можу бути далеко від цього, оскільки я досить новачок у розвитку XNA, тому не соромтесь направляти мене в правильному напрямку, якщо я спускаюся з неправильної кролячої нори.
ТІА