2015-01-13 3 views
2

MonoGame (버전 3.2, 작성 당시의 마지막 임원)을 사용하여 간단한 테스트 응용 프로그램을 만들었지 만 응용 프로그램을 전체 화면으로 만들 수는 없습니다. MonoGame GraphicsDevice.DisplayMode가 작동하지 않습니다.

나는 다른 곳에서이 코드를 발견

protected override void Initialize() 
{ 
    graphics.IsFullScreen = true; 
    graphics.PreferredBackBufferWidth = GraphicsDevice.DisplayMode.Width; 
    graphics.PreferredBackBufferHeight = GraphicsDevice.DisplayMode.Height; 
    graphics.ApplyChanges(); 

    Window.IsBorderless = true; 
    Window.Position = new Point(0, 0); 

    base.Initialize(); 
} 

을 그러나 문제는 GraphicsDevice.DisplayMode 항상 800x600의 화면 크기를 반환하는 것입니다. 또한 GraphicsAdapter.Adapters 컬렉션에는 지원되는 단일 디스플레이 모드 (800x600)와 함께 단일 어댑터 만 포함됩니다.

여기에서 문제가 될 수있는 것은 무엇입니까? 내 현재 해상도는 1920x1080이며 두 대의 모니터를 확장 바탕 화면으로 연결하면 동일한 결과가 나타납니다 (내 일반적인 설정). 끝에

업데이트는 단순히 System.Windows.Forms에 대한 참조를 추가하고 사용 : MonoGame 제대로 어떤 어댑터/화면을 감지하지 않는 이유

graphics.IsFullScreen = true; 
graphics.PreferredBackBufferWidth = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width; 
graphics.PreferredBackBufferHeight = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height; 
graphics.ApplyChanges(); 

가 아직도 궁금합니다.

업데이트 2this answer에서 언급 한 바와 같이 비공식 빌드 (작성 당시)에서 문제가 해결되었습니다.

+0

'Game' 생성자의 끝에 코드를 옮겨보십시오. – Vlad

+0

@Vlad :'GraphicsDevice'가 ctor 내에서 null이기 때문에 작동하지 않습니다 (적어도 MonoGame에서는 XNA에서 다르게 동작한다고 생각합니다). – Lou

+0

'base.Initialize()'다음에'graphics.IsFullScreen = true' 및 * nothing * else를 설정하고 예상대로 작동합니다. 이 문제를 해결하기 위해 winform을 사용하고 있으므로 Linux/Mac이 아닌 Windows를 사용하고있는 것으로 추측 할 수 있습니다. 어떤 버전인지 확인해 주시겠습니까? VM을 설정하고 모양을 보겠습니다. – Joe

답변

0

base.Initialize 호출 후 graphics 코드를 이동하십시오. 시스템이 초기화되지 않았기 때문에 일부 기본 설정으로 초기화됩니다. 일반적으로 으로 사용자가 게임 내 설정을 변경하는 경우 게임 진행 중 그래픽을 변경할 수 있어야합니다 (초기화 후).

+1

도움이되지 않았습니다. 실제로'GraphicsDevice.DisplayMode'는'Update'와'Draw' 메소드 에서조차 800x600입니다. 'graphics.PreferredBackBufferWidth'와'Height'를 다른 해상도로 하드 코딩하더라도, 항상 800x600으로 유지됩니다. – Lou