2012-03-15 10 views
1

스텐실 버퍼를 설정하여 화면의 일부만 그리기 호출의 영향을받습니다. 구체적으로, 나는 작은 영역을 그리기를 원한다. 그것은 UI가 될 것이므로 그려지는 모든 것은 2D 스프라이트의 일종이 될 것입니다. 스프라이트 객체를 사용하면 매우 잘 작동합니다. 영역 밖에있는 스프라이트는 잘립니다. 그러나 텍스트를 추가하면 이후에 그려지는 모든 내용과 텍스트 자체가 잘리지 않습니다. PIX는 드로잉 텍스트가 호출 되 자마자 스텐실 버퍼가 꺼진 상태로 새로운 DepthStencilState가 설정되었음을 보여줍니다. 텍스트는 다른 스프라이트 그리기를 담당하는 동일한 스프라이트 객체에 의해 그려집니다.스텐실 버퍼를 사용하여 텍스트 그리기

그림은 SlimDX.Direct3D10.Font.Draw 메서드를 통해 수행됩니다.

DirectX가 상태 개체를 변경하지 않도록 할 방법이 있습니까? SlimDX를 사용하지만, 코드에 따르면 상태 변경에 책임이없는 것 같습니다.

니코

+0

는 다이렉트는 당신이 그릴 셰이더를 사용하고 그 효과 프레임 워크를 사용하는 경우의 나는 당신이 효과에 깊이 스텐실 상태를 설정할 수 있다고 생각합니다. 아마도 당신이 사용하고있는 효과는 이것을 설정하는 것이고, 당신은 프로그램 코드가 아닌 Effect 파일을 봐야 할 것입니다. – jcoder

+0

글쎄, 그럴 수도있어. 그러나 Font 클래스를 직접 사용합니다. 그래서 나는 효과 파일에 접근 할 수 없다. 그러나 드로잉은 Sprite 객체를 통해 수행되며, Font 클래스는 간단한 스프라이트를 그릴 때와 같은 방법을 사용한다고 가정합니다. 따라서 셰이더 자체에서 문제가되는 것은 의심 스럽습니다. –

+1

http://www.gamedev.net/topic/573166-dx10-id3dx10sprite-and-sampler-states/에서는 이러한 종류의 문제에 대해 논의합니다 ... 불행히도 끔찍한 해킹이 없다면 원하는대로 의견을 말하십시오. – jcoder

답변

0

당신이 D3D11로 전환하는 경우, 당신은 내가 SlimDX에 (출시 된 다이렉트 X 툴킷 라이브러리에서 다른 비트와 함께 이식하는 작업을했습니다 폰트 렌더링 라이브러리에 관심이있을 수도 있습니다 지난 몇 개월 동안).

(SVN) 그것은 아직 개발이다, 그래서 아무것도에 대한 보장하지만, 당신이 여기에서 찾을 수 있습니다 : 아마도 http://code.google.com/p/slimdx/source/browse/#svn%2Fbranches%2Flite%2FSlimDX.Toolkit

+0

답변 해 주셔서 감사합니다. 그 동안 나는 내 자신의 엔진을 개발하기 시작했습니다 ... –

+0

결과에 관심있는 사람이 있다면 : http://sdxspritetext.codeplex.com/ –

관련 문제