2009-10-09 3 views
1

어떻게해야할까요? 반투명 한 창으로 생각되는 직사각형을 그립니다. 나는 반투명 한 텍스처를 그리는 것으로 투명도를 관리했지만, 창 아래에있는 것이 무엇이든간에 흐리게 처리하려고합니다.Direct3d/C# - 스프라이트에 그려지는 사각형 아래의 영역을 흐리게 처리합니다.

일반적으로 (예 : GDI를 사용하여) 영역의 비트 맵을 만들고 흐리게 처리하고 내 창 배경으로 페인트합니다. Direct3D를 사용하면 이미 렌더링 된 내용으로 영역을 가져 오는 방법을 알지 못합니다. 아니면 다른 접근법이있을 수 있습니다. 도와주세요.

답변

1

D3D 방법은 픽셀 쉐이더를 사용하여 rect 아래의 영역을 "흐리게"하는 것입니다.

This 링크는 C#에서 픽셀 쉐이더를 사용하는 방법을 보여줍니다.
And this 링크에는 guassian 흐림 픽셀 쉐이더가 있습니다.

1

텍스처에 백 버퍼가 있어야합니다. 그런 다음 모든 것을 새로운 텍스처로 렌더링하고 반투명 창을 새 텍스처 위에 배치하기 전에 관련 부분을 흐리게 처리 할 수 ​​있습니다.

편집 : AFAIK 셰이더 내에서 그리기 기능을 사용할 수 없습니다. 스프라이트 렌더러를 직접 작성해야합니다. Begin and Draw는 버텍스 쉐이더의 사용을 중단시킬 수있는 모든 상태를 설정합니다.

+0

다음과 같은 것이 있습니까? 서프 서프 = m_Device.GetBackBuffer (0, 0, BackBufferType.Mono); 표면에서 비트 맵이나 텍스처를 얻으려면 어떻게해야합니까? 이 문제를 해결하는 PresentParamenters가 있습니까? 이것에 대한 예외가 계속 발생합니다 : Graphics gr = surf.GetGraphics(); –

+0

텍스처를 모두 렌더링해야합니다. – Goz

+0

렌더링 - 투 - 텍스처를 설정하는 것은 매우 쉽습니다 :) – Goz

관련 문제