2009-11-23 3 views
3

XNA 및 안티 앨리어싱에 문제가 있습니다.XNA Antialias 질문!

 graphics.PreferMultiSampling = true; 
     graphics.ApplyChanges(); 

을 사용하여 활성화 할 수 있습니다. 단 2 배 안티 앨리어싱입니다. 설정 한 경우에도

graphics.GraphicsDevice.PresentationParameters.MultiSampleType = MultiSampleType.SixteenSamples; 

2x 앤티 앨리어싱 만 유지됩니다. 내 그래픽 드라이버 설정 (NVIDIA GeForce 9800 GT)으로 가서 Application의 Antialiastype을 16x로 설정하면 좋고 깨끗한 앤티 엘리 어싱을 얻을 수 있습니다. 하지만 '응용 프로그램 결정'에 설정되어있는 경우 2 배가 넘지 않습니다.

누구에게 생각하십니까? 감사합니다.

+0

그래픽 매개 변수를 설정하는 기능은 무엇입니까? ApplyChanges()를 호출하기 전에 모두 설정하고 있습니까? – Venesectrix

+0

코드의 첫 번째 청크는 게임 클래스의 생성자에서 호출하고 두 번째 코드 청크는 LoadContent() 함수에서 호출하고 그 후에 graphics.ApplyChanges()를 두 번째 호출합니다 – Mat

답변

4

MSDN에 대한 안내를 따르려고합니다. XNA 포럼의 this thread에서 Shawn Hargreaves는 다른 사람 (당신과 비슷한 코드를 사용하고있는 사람)에게 멀티 샘플링을 설정하는 방법이 아니라고 말합니다. 그는 장치를 만들 때 매개 변수에 지정해야한다고 표시합니다. MSDN 문서에서는 적절한 시간에 앤티 앨리어싱을 설정하기 위해 처리 할 이벤트를 보여줍니다. This thread도 기본적으로 동일한 것을 나타냅니다. 이벤트 처리기에서이 유형의 설정을 수행해야합니다.

또한 MSDN 예제에서 4XAA 및 2XAA가 있는지 확인하기 때문에 16XAA를 지원하도록 코드를 변경해야 할 수도 있습니다. 비록 이것을보고있는 동안, 나는이 첫 번째 XNA 스레드에서이 인용문을 보았다 :

또한 멀티 샘플링을 위해 16 개의 서브 샘플을 지원하는 GPU가 없다는 것을 알고있다. 예를 들어 Nvidia의 8000과 9000 시리즈에서 볼 수있는 모드 이름 인 "16x"는 품질 수준이 "2"IIRC 인 실제로 4 개의 샘플을 사용합니다. 대부분의 GPU 지원은 "8xQ"및 "16xQ"설정에 해당하는 8 개의 하위 샘플입니다.

따라서 16XAA를 얻으려면 어떤 설정을 사용해야하는지 정확히 알지 못합니다. 당신은 그걸 가지고 놀아야 할 수도 있습니다.