Проблема с прозрачностью при рисовании с помощью RenderToSurface - PullRequest
0 голосов
/ 23 ноября 2011

Я сталкиваюсь с проблемой при рисовании полупрозрачного объекта с помощью RenderToSurface (когда это рабочий файл, когда я рисую объект прямо на устройстве).Проблема в том, что когда я рисую объект с альфа-значением 50% на RenderToSurface, и когда я рисую поверхность на устройстве, прозрачность объекта недопустима.Мой код выглядит следующим образом.

[code] RenderingSurface.BeginScene (RenderTexture.GetSurfaceLevel (0), view);

                _device.Clear(ClearFlags.Target| ClearFlags.ZBuffer, Color.FromArgb(0, Color.Black), 1.0f, 0);
                using (Sprite s = new Sprite(_device))
                {
                        s.Begin(SpriteFlags.DoNotSaveState);
                    s.Draw(ObjecTexture, new Microsoft.DirectX.Vector3(0, 0, 0), new Microsoft.DirectX.Vector3(0, 1, 0), Color.White.ToArgb());
                    s.End();
                }
                RenderingSurface.EndScene(Filter.None);

RenderSurface имеют одинаковую форму с прозрачностью 50%.

Код для рисования поверхности.

_device.BeginScene();
        _device.Clear(ClearFlags.Target | ClearFlags.ZBuffer | ClearFlags.Stencil, BackgroundColor, 1, 0);

  using (Sprite s = new Sprite(_device))
    {
        s.Begin(SpriteFlags.DoNotSaveState);
        s.Draw(RenderTexture, new Microsoft.DirectX.Vector3(0, 0, 0), new Microsoft.DirectX.Vector3(0, 1, 0), Color.White.ToArgb());
        s.End();
    }

1 Ответ

0 голосов
/ 24 ноября 2011

Убедитесь, что ваша цель рендеринга RenderSurface создана с использованием PixelFormat с альфа-каналом (A8R8G8B8, а не X8R8G8B8).

Кроме того, при рендеринге в цели рендеринга убедитесь, что получающаяся альфа записывается на поверхность, используя правильные состояния рендеринга в режиме наложения для альфа-канала. Обратите внимание, что режимы наложения для альфа (AlphaDestinationBlend, AlphaSourceBlend, ...) и цветов (DestinationBlend, SourceBlend, ...) различны; убедитесь, что вы установили оба.

...