如何使用GLFW确定OpenGL 3.3窗口的可绘制区域的大小

How to determine size of the drawable area of an OpenGL 3.3 window using GLFW

本文关键字:绘制 区域 窗口 何使用 GLFW 确定 OpenGL      更新时间:2023-10-16

我正在尝试使用GLFW和OpenGL 3.3创建一个游戏/应用程序。我希望能够检测到与窗口侧面的碰撞,但窗口的可绘制区域似乎与使用glfwCreateWindow()设置的窗口大小不同。

所以我的问题是,如何获得可绘制区域,即窗口的大小减去边框?我宁愿不必使用WinAPI,使其更跨平台,而glfwGetWindowFrameSize()在GLFW 3.1中,它还没有完成。

编辑:我的问题让我觉得我需要使用GLFW来实现这一点,但这不是真的。我只是想注意,我正在使用GLFW作为窗口/输入处理程序。

您需要glfwGetFramebufferSize

glfwGetVideoMode返回指定监视器的视频模式,而不是窗口的大小。对于全屏窗口,它们恰好是相同的,但对于其他窗口,它们可能非常不同。

从外观上看,您不需要来知道窗口的大小,我假设是以像素为单位?如果你想对窗口的边界进行碰撞检测,你只需要检测顶点的NDC,一旦它达到x或y=(-1,1),你就会发生碰撞。尽管如此,如果您想获得OpenGL上下文的像素大小,请使用glfwGetVideoMode()