2012-03-21 4 views
-1

그래서 잠시 동안 내 게임에서 제대로 작동하도록 해상도 설정을 시도하고 있습니다. 16 : 9의 비율을 유지하려고합니다. OpenGL과 함께 SDL을 사용하고 있습니다. 그리고 여기 내 변화 해상도 클래스의 : 처음에는 glOrtho 창 크기와보기 포트와 함께 확장으로 설정했다 지금openGL 해상도 설정, 설명 할 수없는 화면

#ifndef _RESOLUTION_CPP_ 
#define _RESOLUTION_CPP_ 

#include "Main.h" 

class Resolution{ 

public: 

static void ChangeResolution(SDL_Surface* Screen,int Width,int Height, bool FullScreen){ 
    int Full = 0; 
    if(FullScreen){ 
     Full = SDL_FULLSCREEN; 
    } 
Screen = SDL_SetVideoMode(Width , Height, 32, SDL_HWSURFACE | SDL_GL_DOUBLEBUFFER | SDL_OPENGL| Full); 

glClearColor(0, 0, 0, 0); 
glClearDepth(1.0f); 

glViewport(0, 0, Width, Height); 

glMatrixMode(GL_PROJECTION); 
glLoadIdentity(); 

//glOrtho(0, Width, Height, 0, 1, -1); 
glOrtho(0, 960,540, 0, 1, -1); 

glMatrixMode(GL_MODELVIEW); 

glEnable(GL_TEXTURE_2D); 

glLoadIdentity(); 
} 

}; 

#endif 

하지만 창 크기가 큰 가지고 나를 화면을 더보고 만든 년후하는 내가 원하는 걸. 그래서 카메라를 설정하면 (glOtho는 카메라와 똑같습니까?) 일정한 폭과 높이에 항상 같은 부분을 볼 수있었습니다. 여태까지는 그런대로 잘됐다.

이제 창 모드에서 게임을 시도하면 모든 것이 정확하게 작동합니다. 게임의 그래픽 스케일, 가로 세로 비율 유지, 그리고 항상 화면의 동일한 부분을 볼 수 있습니다.

이제 5 전체 화면을 시도 :

enter image description here

왼쪽 : 960x540 --- 중학교 : 1024x576 선 --- 오른쪽 : 4 모니터, 이것이 내가 무엇을 얻을 1200x675

보시다시피, 중간에있는 것 하나만 작동합니다. 화면을 채우기 위해 늘어나지 만 화면 비율을 없애기 위해 늘리지는 않습니다. 왼쪽에있는 것은 가로 세로 비율을 유지하지만 크기 조정은 충분하지 않습니다.

오른쪽의 세로가 세로로 늘어나고 가로 세로 비율이 깨졌습니다. 왜 그런가요? 왜 그렇게 늘어날까요?

중간 모니터에서 맨 위와 맨 위의 검은 색 공간이 될 수 있도록 화면 중앙에 배치하는 방법은 무엇입니까?

추가 정보 : 나는 16:10 노트북이 때

, 내가 중심되는 충분한 여부를 조정되지 않는 화면과 유사한 결과를 얻을 수 있지만, 결코 뻗어 없습니다. 심지어 1920,1080의 거대한 해상도로 설정하십시오. 작은 부분 만 볼 수 있도록 화면 크기보다 정확하게 확장되지만 1920x1080을 매우 작은 해상도로 짤 수는 없다고 생각합니다.

제 질문은 실제로 : 해상도 문제가 완전히 예측할 수없는 이유는 무엇입니까? 때로는 늘어나거나 때로는 확장되지 않을 때도 있습니다. 어떻게 수정합니까?

+0

아마 [질문이 SO (http://stackoverflow.com/questions/ 뷰포트 여러 (GLfloat) 폭/(GLfloat) 높이 mathch 할 수 있도록 2571402/c-opengl-glortho-please-explain-of-this-command) 도움이 될 것입니다. –

+0

다른 사이트가 아닌 실제 게시물에 코드를 넣는 것이 좋습니다. –

답변

0
glOrtho(0, 960,540, 0, 1, -1); 

paramters는 비