2017-11-24 35 views
0

예 4의 샘플 수를 설정하고 멀티 샘플링을 적용하도록 래스터 라이저 스테이지를 설정하여 멀티 샘플링을 적용 할 수 있다는 것을 알고 있습니다. 이것은 훌륭하게 작동하지만, 지금은 멀티 샘플링을 내가 작성한 draw 호출의 서브 세트에만 적용하고자합니다. 어떻게해야합니까? 사이비 코드에서모두가 아닌 특정 그리기 호출에 멀티 샘플링/앤티 앨리어싱 적용

이 내가 달성하고자하는 것입니다 : 사전에 어떤 도움

> build vertices data for a simple triangle 
> map and copy vertices data to device 
> send draw call to device which does NOT apply anti aliasing 

> build vertices data for a simple rectangle 
> map and copy vertices data to device 
> send draw call to device which applies multisampling/antialiasing 

감사합니다!

답변

1

Direct3D 11에는 D3D11_RASTERIZER_DESC.MultisampleEnable이라는 래스터 라이저 상태가 있습니다. 그러나 만이 Direct3D Feature Level 9.x 및 10.0에서 멀티 샘플 렌더링을 비활성화합니다. Direct3D Feature Level 10.1 이상의 하드웨어에서는, 샘플 수가 1보다 큰 렌더 타겟에 대해 점이나 삼각형을 렌더링하는 방법을 변경하지 않습니다. 대신, 라인 알고리즘을 AntialiasedLineEnable과 조합하여 설정합니다 MSDN에 있습니다.

즉, MSAA 표면에 렌더링하는 경우 대부분의 경우 멀티 샘플링됩니다. 질문 : 당신은 정말로 여기서 무엇을 성취하려고합니까?

+0

3D 타겟 위에 오버레이 소프트웨어를 만들고 있습니다. 그러나 장치가 이미 초기화되어 있고 일부 샘플 수가 정의되어 있기 때문에 그래픽 장치에 예를 들어 4x 멀티 샘플링을 그리기 호출에만 적용 할 방법이 필요합니다. 대상 3D 프로그램에 영향을 미치지 않고. –

0

Chuck Walbourn이 설명했듯이 단일 및 다중 샘플 렌더링을 동일한 렌더링 대상에 혼합 할 수 없습니다. 그러나 다중 샘플 콘텐츠를 텍스처로 렌더링하고이를 단일 샘플로 변환 할 수도 있습니다. 이 텍스처를 싱글 샘플 렌더 타겟에 렌더링 할 수 있습니다.

다중 샘플링 된 리소스를 단일 샘플링 된 리소스로 해결하는 방법은 ID3D11DeviceContext::ResolveSubresource()입니다.