2016-07-31 4 views
0

내 그래픽 장치가 설정되어 monogame에 목표를 다시 버퍼를 렌더링 :문제 이해는 다음과 같이

GraphicsDeviceManager = new GraphicsDeviceManager(GameBase.GameRef); 
GraphicsDeviceManager.PreferredBackBufferWidth = 640; 
GraphicsDeviceManager.PreferredBackBufferHeight = 480; 
GraphicsDeviceManager.ApplyChanges(); 

나는 다시 선호 버퍼 폭이 뜻을 정확히 설명하는 구글의 아무 곳이나 찾을 수 없습니다.

RenderTarget = new RenderTarget2D(
    GraphicsDeviceManager.GraphicsDevice, 
    640, 
    480, 
    false, 
    GraphicsDeviceManager.GraphicsDevice.PresentationParameters.BackBufferFormat, 
    DepthFormat.Depth24); 

나는 640와 480이 실제로는 대상이 그려 렌더링 방법에 대해서 무엇을 의미하는지에 대한 구글에서 아무것도 찾을 수 없습니다

나는이 같은 렌더 타겟을 설정합니다.

내가 가지고있는 문제는 창 크기를 조정하면 모든 것이 늘어납니다. 나는 이것을하기 위해 무슨 일이 일어나고 있는지 이해하려고 노력하고있다. 그리고 나서 마침내 해결책을 찾아 낸다. 내 창을 시작

는 640 × 480이며, PreferredBackBufferWidth 및 높이 480분의 640이고 내가 예를 들어 1920 × 1080로 창의 크기를 조절하면 대상이 480분의 640

입니다 렌더링, 모든 그래서 어떻게 든 monogame 더 이상 뻗어 없습니다 화면의 640x480 부분에 640x480 텍스처를 렌더링했지만 값을 변경하지 않았거나 이에 대한 코드를 수행하지 않았습니다.

화면의 크기를 조정하면 렌더 타겟을 파괴하여 새로운 윈도우 크기에서 다시 생성해야합니까? 아니면 백 버퍼 너비와 높이를 변경해야합니까? 아니면 둘 다 변경해야합니까?

저는 매우 혼란스럽고 자세한 내용에 대해 충분히 기술 할만한 온라인 설명서가 없습니다. 일단 내가 이해할 수 있다면, 화면 크기를 조정할 때 아무 것도 일어나지 않고, 모든 것이 같은 크기로 유지되고 오른쪽/아래 가장자리 주위에 검은 색 영역이 있기 때문에 창문이 내가 무엇보다 큽니다. .

+0

지금 확인할 수 없습니다. 그러나 내가 기억하는 한 두 가지 모두 크기를 조정해야합니다. RenderTarget이 "이미 그려진 그림을 투영하고있는 평면"인 동안 "당신이 그리는 종이"로 백 버퍼를 생각하십시오. 따라서 스트레칭을 원하지 않는다면 "종이"에 더 많은 공간을 확보하기 위해 버퍼를 다시 변경 한 다음 RenderTarget을 실제로 "드로잉을 보여줄 장소"로 변경해야합니다. –

+0

그래서 간단한 (예제) 시나리오에서 백 버퍼는 목표로 삼을 최대 크기를 가져야합니다. –

+0

나는 XNA가 살아있는 날 MSDN의 스켈레톤 참조 항목보다는 XNA 자습서에 대한 도움말을 찾기가 쉽다는 것을 알았습니다. 내가 찾을 수있는 가장 좋은 점은 [이 기사] (https://msdn.microsoft.com/en-us/library/bb195022.aspx)이며, 가로 세로 비율에도 약간의 차이가 있습니다. 도움이 되었으면 좋겠다. – MickyD

답변

0

백 버퍼는 화면에 표시되는 특수 렌더링 대상입니다. 창을 채우기 위해 늘려서 창 크기가 일치하지 않으면 크기가 조절됩니다.

창 크기가 변경되면 백 버퍼의 크기를 조정할 수 있습니다. 해당 이벤트가 발생하면 Game.Window.ClientSizeChanged 이벤트가 발생합니다. 사용자가 드래그하여 창의 크기를 조정하면 여러 번 실행될 수 있습니다. 그런 다음 백 버퍼 크기를 조정하면이 RenderTarget은 당신이 그것을 사용하는지에 따라 재 작성해야하는지 여부 단순히

GraphicsDeviceManager.PreferredBackBufferWidth = Window.ClientBounds.Width; 
GraphicsDeviceManager.PreferredBackBufferHeight = Window.ClientBounds.Height; 
GraphicsDeviceManager.ApplyChanges(); 

입니다.

+0

출력 크기를 창 크기에 맞게 늘릴 수는 있지만 옵션으로 켜고 끌 수 있습니다.때로는 스트레칭을하고, 때로는 더 많은 화면을 렌더링하고 싶습니다 (게임에서 더 많은 타일을 볼 수 있습니다). 아마도 둘 다 같은 크기 여야합니다. 나는 이것을 실험 할 것이다. – NibblyPig