Autor Wątek: AlphaTestEffect, jak użyć, dziwne wyniki  (Przeczytany 2121 razy)

Offline michal_2

  • Użytkownik

# Kwiecień 05, 2013, 14:20:51
Mam taki kod:

protected override void LoadContent()
{
    // Create a new SpriteBatch, which can be used to draw textures.
    spriteBatch = new SpriteBatch(GraphicsDevice);

    ShaderTexture = Content.Load<Texture2D>("b_free_play");

    pixelShader = new AlphaTestEffect(graphics.GraphicsDevice);
}

protected override void Draw(GameTime gameTime)
{
    GraphicsDevice.Clear(Color.CornflowerBlue);

    spriteBatch.Begin();
    spriteBatch.End();

    spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, SamplerState.LinearClamp, DepthStencilState.Default, RasterizerState.CullNone, pixelShader);
    //spriteBatch.Begin();

    spriteBatch.Draw(ShaderTexture, Vector2.Zero, null, Color.White, 0f, Vector2.Zero, 1f, SpriteEffects.None, 1f);

    spriteBatch.End();

    // TODO: Add your drawing code here

    base.Draw(gameTime);
}

Problem polega na tym, że maska nie jest prawidłowo aplikowana. Zamiast tego jest kolor tła z czarnym kwadratem, ale nie w miejscu maski, tylko w prawym górnym rogu.



a maska jest w lewym górnym rogu i nie sięga do końca ekranu, wiec nie wiem skąd taki efekt.

P.S

Piszę w XNA 4.0 dla Windows Phone 8 (C#)

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline komorra

  • Użytkownik
    • Blog naszego teamu (o grze Voxelfield)

# Kwiecień 05, 2013, 14:42:13
A gdzie ustawiasz test value? Alpha test działa tak że wszystko poniżej tej wartości "ucina". Jezeli chcesz zwykły blending to użyj BasicEffect.

Offline michal_2

  • Użytkownik

# Kwiecień 05, 2013, 14:48:54
BasicEffect daje prawie taki sam efekt, tylko, że za miast czarnego prostokąta jest biały:



P.S

A maska wygląda tak:
« Ostatnia zmiana: Kwiecień 05, 2013, 15:30:21 wysłana przez michal_2 »

Offline Kebab_u_Turka

  • Użytkownik

  • +1
# Kwiecień 05, 2013, 18:28:11