OpenGL中glfwCreateWindow与glViewport尺寸不一致时的渲染问题
关于glViewport与窗口尺寸不匹配时的OpenGL渲染效果
当glViewport的尺寸和GLFW创建的窗口尺寸不一致时,OpenGL会将标准化设备坐标(NDC)仅映射到glViewport指定的矩形区域,窗口其余区域会保持你初始化时设置的清除颜色。
针对你举的800×600窗口搭配glViewport(0, 0, 400, 300)的例子:
- 三角形确实只会显示在窗口的左上1/4区域,和你预想的效果一致。
- 原理是:OpenGL的NDC范围是[-1,1],这个坐标会被线性映射到
glViewport定义的像素范围——NDC的(-1,-1)对应glViewport的(0,0),NDC的(1,1)对应glViewport的(400,300),所有渲染内容都会被限制在这个400×300的矩形内。 - 窗口中超出这个矩形的区域不会被渲染内容覆盖,会保留
glClear设置的默认颜色(通常是黑色)。
内容的提问来源于stack exchange,提问作者DR 2020
相关产品推荐
相关产品推荐

