2012-12-08 6 views
0

게임을 개발 중입니다. 화면에 몇 가지 텍스처를 그려 보겠습니다. 필자는 spriteBatch를 사용하여 texture2d를 그렸습니다.Windows Phone 7 onDraw

텍스처는 onDraw 메서드에 코드를 넣은 경우에만 표시됩니다. onDraw 메서드는 타이머에 바인딩되어 여러 번 실행됩니다. 직사각형을 한 번만 그리기를 원합니다.

코드를 생성자에 넣으면 직사각형이 표시되지 않습니다. 코드가 onDraw 함수에있을 때만 표시됩니다. 어떻게 그것을 생략 할 수 있습니까?

답변

2

XNA에서이 작업을 수행하는 데 유용한 옵션이 없습니다. 대부분의 게임은 각 프레임 전체 화면을 다시 그려야하므로 XNA가 어떻게 구성되어 있는지를 알 수 있습니다. (그리고 이 실제로는 이유가 없다면 게임을 구조화해야합니다.)

XNA는 이중 버퍼링을 사용합니다 (이 방법은 사용하지 않는 것이 좋습니다). 백 버퍼에서 드로잉을 한 다음 프론트 버퍼로 스왑합니다. 화면에 직접 그릴 수 없습니다.

이없는 동안 화면을 지우고 각 프레임에 다시 그려야합니다. 그렇지 않으면 수동으로이 두 버퍼의 내용을 동기화하지 않아야합니다. 그렇지 않으면 얻을 수 있습니다. 심한 깜박임. 이것은 노력할만한 가치가 없습니다.

당신은 무엇을 찾고 수 하면 Game.SupressDraw 방법입니다 (: BeginDraw을 무시하고 false을 반환하는 대신 Update에서 호출 - - 나). 이렇게하면 해당 특정 프레임에 대해 Draw이 호출되지 않으며 백 버퍼가 앞쪽으로 스왑되지 않습니다. 따라서 이전 프레임은 단순히 화면에 머물러 있습니다.

그러나 일반적으로 모든 단일 프레임을 그리는 것이 일반적입니다.