etc.

[OpenGL 3] 그림이 왼쪽 아래에만 그려질 때 해결 방법 / viewport 위치 이상할 때

공대 아로마 2020. 11. 9. 19:13

크로스플랫폼 개발을 하고 있는데, 문제가 OS마다 다르다.

그 중 하나가 macOS에서 갑자기 왼쪽 아래쪽에만 viewport가 나타나는 현상이었다.

 

4.3 - Why is my output in the lower-left corner of the window?
You are passing the window size, which is in screen coordinates, to glViewport, which works with pixels. On macOS with a Retina display, and possibly on other platforms in the future, screen coordinates and pixels do not map 1:1. Use the framebuffer size, which is in pixels, instead of the window size.
- glfw.org

구글링을 하다가 이런 글을 찾았다.

GLFW 공식 홈페이지에 있는 글이다.

macOS에서는 스크린 좌표와 픽셀이 1:1 매치가 아니라는 이야기이다.

 

그래서 해결방법은 framebuffer size를 사용하라는 것이다. window size 대신!

 

glViewport(0, 0, window_width, window_height);

원래는 이런 식으로 viewport 크기와 위치를 지정했었는데,

 

int width, height;
glfwGetFramebufferSize(window, &width, &height);
glViewport(0, 0, width, height);

이렇게 수정했다.

 

간단히 해결!