2011-08-27 6 views
2

OpenGL에서 게임을하고 SDL을 사용하여 창 관리, 아이콘 설정 및 모든 작업을 수행합니다. 장면을 프레임 버퍼로 렌더링하도록 설정 했으므로 시작 GL 설정을 유지하면서 SDL 창 크기를 조정할 수 있는지 궁금했습니다 (정확한 해상도를 에뮬레이트하려고 시도하고 있으므로 창 크기가 창 크기에 맞게 프레임 버퍼 크기를 조정합니다).)OpenGL 및 SDL, 내부 해상도를 변경하지 않고 창 크기를 조정 하시겠습니까?

내가 glortho로 전달하는 해상도의 해상도를 SDL 창에 두 배 줄 렸지만 예상치 못한 결과가 나타납니다. 이것이 가능한가, 아니면 내 작업 해상도를 항상 화면 해상도에 맞게 조정해야합니까? 은 I 영상을

SDL_SetVideoMode(XRES, YRES, bpp, SDL_OPENGL | SDL_HWPALETTE); 
gl_init(XRES,YRES); 

를 초기화하는 코드를 사용 gl_init으로 I는 glOrtho (0, 폭, 0, 높이, -1, 1), 다음 프레임 버퍼는 "빈"텍스처 너비와 높이 glortho 설정 뿐만 아니라 크기.

위와 같이 함수를 호출하면 모두 정상입니다. 내가 대신 내 예상 결과 (축소 출력)를 얻기의

SDL_SetVideoMode(XRES*2, YRES*2, bpp, SDL_OPENGL | SDL_HWPALETTE); 
gl_init(XRES,YRES); 

뭔가를하려고하면하지만 출력이 먼 경우처럼, X 축에 어딘가에 Y 축 중간에 왼쪽에있는 곳임을 알 수 GL 크기는 화면보다 커졌고 나머지는 잘려 나갔다. 내가 누락 된 것이 있습니까?

답변

2

간단히 FBO 텍스처 크기를 창 크기의 1/4 (가장자리 길이의 1/2)로 설정 한 다음 FBO의 색상 버퍼 텍스처를 전체 SDL 창에 렌더링합니다.

+0

내 GL을 고정 크기로 유지하고 싶습니다 ... 창 크기를 조정하면 내부적으로 같은 수의 픽셀로 계속 작업 할 것이고 특별히 정수가 아닌 값은 피할 수 있습니다. 단일 픽셀 세부 사항을 파괴하는 부서에서 반올림 오류 때문에 이전 프로젝트에 문제가있었습니다. – PatrickL83

+0

@Patrick : 그러면 원하는 해상도의 FBO 만 만들면됩니다. 그런 다음 실제 SDL 창으로 그립니다. –

+0

Nicolas, 그건 내가 말한거야. – karx11erx

1

나는 이것이 오래된 질문이지만, Google에서는 최고의 결과이며 답변이 없다는 것을 알고 있습니다.

glViewport()으로 전화해야합니다. 내부 해상도를 1024x768로하고 윈도우 해상도가 windowWidth 및 windowHeight라고 가정합니다. FBO에 쓰기 전에 glViewport(0, 0, 1024, 768)으로 전화하십시오. 그런 다음 FBO를 창에 쓰기 전에 glViewport(0, 0, windowWidth, windowHeight)으로 전화하십시오.

관련 문제