2011-05-02 3 views
0

OpenTk GameWindow를 사용하고 있습니다. 내 프로젝트에 그래픽 설정을 추가했습니다. 하지만 런타임에 전체 화면 모드를 올바르게 변경하거나 들어가는 방법을 알아낼 수는 없습니다.OpenTK에서 뷰포트 해상도를 변경하는 방법

누군가 게임을 실행하는 동안 해상도 및/또는 전체 화면 상태를 변경하는 올바른 절차를 설명해주십시오.

WindowState = WindowState.Fullscreen;WindowState = WindowState.Fullscreen; 작업을 사용하지만보기 영역을 수정하고 GL.Viewport가 설정을 수정하지 않습니다.

나는 현재 GameWindow 생성자에서 DisplayDevice.GetDisplay(DisplayIndex.Default).ChangeResolution

답변

0

표정으로 모니터 해상도를 변경하고있다. 대부분은 폭과 높이를 첫 번째 매개 변수로 사용합니다. 전체 화면은 GameWindowFlags 매개 변수를 통해 설정됩니다.

+0

GameWindow를 만들 때 창을 설정하는 방법을 알고 있습니다. 게임이 실행되는 동안 해상도와 전체 화면 상태를 변경하는 방법을 알아야합니다. – KobraX22

+0

@ KobraX22. 아, 죄송합니다, 나는 당신의 질문을 오해했습니다. OpenTK 포럼을 사용해 보셨습니까? – kvark

+0

지금 살펴 보겠습니다. – KobraX22

2

전체 화면 모드가 아닌 경우 GameWindow 객체에서 Size 속성을 호출하기 만하면 창의 크기를 조정할 수 있습니다. WindowState에 대해 이미 알고 있습니다.

가장 중요한 작업은 GameWindow 클래스의 OnResize 메소드를 덮어 쓰는 것입니다. 전체 화면 모드로 설정하는 것을 포함하여 게임 창의 크기가 조정되면 자동으로 호출됩니다. 거기에서 뷰포트를 다시 초기화 할 수 있습니다.

예를 들어 현재 테스트중인 프로젝트에서 다음 코드는 창 크기를 조정하거나 전체 화면 모드로 이동할 때마다보기 포트의 크기를 올바르게 조정합니다. 전체 화면 모드로 전환 할 때 해상도 전환을 사용하지는 않지만 완벽하게 작동 할 것이라고 생각합니다. 아래의 예에서 yoursizehere은 640x640이고 GL.Ortho 메서드를 사용하여 GameWindow.ClientSize에 맞게 조절됩니다. (나는 그 문제에 대한 OpenTK (및 OpenGL에서 초보자이야) 그래서 난 아직도 자신을 배울 수있는 톤을 가지고 -하지만 아래 나를 위해 작동)

protected override void OnResize(EventArgs e) 
{ 
    base.OnResize(e); 

    GL.Viewport(this.ClientRectangle); 
    GL.MatrixMode(MatrixMode.Projection); 
    GL.LoadIdentity(); 
    GL.Ortho(0, yoursizehere.Width, yoursizehere.Height, 0, -1, 0); 
} 

위의 예는 차원 뷰 포트입니다 내가 현재 실험하고있는 것 ... 2 차원에서 OpenGL 개념으로 파악하기에 충분한 문제가있는데도 3 가지가 있습니다!

희망이 있습니다.

관련 문제