XNA, 특히 SpriteBatch에 매우 미묘한 문제가 있습니다. 내 게임에는 Camera 클래스가 있습니다. 그것은보기를 번역 할 수 있으며 (또한 분명히) 확대 및 축소도 가능합니다. spritebatch 인스턴스의 "Begin"함수 (마지막 매개 변수)를 호출 할 때 장면에 카메라를 적용합니다.XNA가 SpriteBatch 드로 콜을 도려 냈습니까?
문제점 : 카메라의 Zoomfactor가 1.0f보다 클 때, 스프라이트 배치는 그리기를 중지합니다. 나는 내 장면을 디버깅하려고했지만 잘못된 곳을 발견 할 수 없었다.
"Matrix.CreateScale (2.0f);로 렌더링하려했습니다." "Begin"의 마지막 매개 변수로 사용됩니다. 다른 모든 매개 변수는 null이며 첫 번째 "SpriteSortMode.Immediate"이므로 사용자 정의 셰이더 또는 다른 것이 없습니다. 그러나 SpriteBatch는 여전히 그리기를 원하지 않았습니다.
그럼 "DrawString"만 호출하고 DrawString은 제공된 축척 (2.0f)으로 완벽하게 작동했습니다.
그러나 많은 시행 착오를 통해 ScaleMatrix에 "Matrix.CreateTranslation (0, 0, -1)"을 곱한 결과 어쨌든 "안전"값이 1.1f로 변경되었습니다. 모든 스케일 값은 1.1f까지 작동합니다. 위의 모든 경우 SpriteBatch는 일반적인 "그리기"호출에서 단일 픽셀을 렌더링하지 않습니다. (여전히 영향을받지 않는 DrawString).
왜 이런 일이 발생합니까? 뷰포트 나 다른 행렬을 설정하지 않았습니다. 이것이 이상한 Near/Farclipping 일 수 있습니다. 그러나 저는 대개 3D 물체의 매개 변수 만 알고 있습니다.
불명확 한 것이 있으면 물어보십시오!
솔루션이 완벽하게 작동합니다. 정말 유익한 설명에 감사드립니다. – riki