Framebuffer 与 Mac OS X
在 Mac OS X 上,Framebuffer 的尺寸与窗口的尺寸并不一样。
GLFW 能察觉到这一点,Qt、GLUT 不能。
因此,如果我们使用 GLFW 来创建窗口:
1 | GLFWwindow* window = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "LearnOpenGL", nullptr, nullptr); |
创建窗口之后,在使用
1 | glViewport(0, 0, SCR_WIDTH, SCR_HEIGHT); |
来映射屏幕坐标时,会得到错误的结果。我们只能得到四分之一的区域。
系统在创建 framebuffer 时会自动将 framebuffer 的宽和高都变为当前窗口宽高的两倍。
也就是说我们指定窗口大小为 800x600 时,系统会创建一个 1600x1200 的 framebuffer。
正确的做法是:
1 | int width, height; |
这样比较跨平台。