좋아, 나는 이것에 관한 몇 가지 기사, 튜토리얼 및 질문을 읽었다. 대부분 내 문제를 해결하지 못하는 동일한 기술을 가리 킵니다. 반투명 스프라이트 (texture2D)를 만들고 다른 스프라이트를 오버레이 할 수있는 기능이 필요합니다.
내가 찾은 코드 샘플로 다소 달성 할 수는 있지만 결과에 만족하지 않으며 이것을 수행 할 수있는 방법이 있다는 것을 알고 있습니다. 모바일 프로그래밍 (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 순서 스프라이트를 통해 두 타일을 모두 렌더링합니다. 블렌딩. 이것은 원하는 효과가 아니며, 더 높은 z 순서 스프라이트가 페이드 아웃되고 그 아래의 색상에 그런 방식으로 영향을 미치지 않기를 바랍니다.
XNA 개발에 익숙하지 않아서 여기에 나올 수 있으므로 잘못된 토끼 구멍을 밟을 때 자유롭게 올바른 방향으로 조종하십시오.
티아