C++ 是否可以仅使用OpenGL确定默认帧缓冲区的大小?

C++ 是否可以仅使用OpenGL确定默认帧缓冲区的大小?,c++,opengl,polling,framebuffer,opengl-3,C++,Opengl,Polling,Framebuffer,Opengl 3,我目前正在为我打算开发的游戏开发一个游戏引擎/框架。我设计的系统通过抽象类和依赖注入尽可能地解耦。理想情况下,我的目标是每个子系统不依赖于引擎的其他部分 在我的渲染系统中,我希望能够将视口和剪切/剪裁区域重置为当前绑定的渲染目标的大小(可以是OpenGL帧缓冲区、Direct3D RenderTarget或默认backbuffer)无需让程序员跟踪它,无需依赖窗口子系统/另一个库或编写依赖于系统的代码 目前,我正在编写渲染子系统的OpenGL实现,我想检查是否可以单独使用OpenGL 3.3函数

我目前正在为我打算开发的游戏开发一个游戏引擎/框架。我设计的系统通过抽象类和依赖注入尽可能地解耦。理想情况下,我的目标是每个子系统不依赖于引擎的其他部分

在我的渲染系统中,我希望能够将视口和剪切/剪裁区域重置为当前绑定的渲染目标的大小(可以是OpenGL帧缓冲区、Direct3D RenderTarget或默认backbuffer)无需让程序员跟踪它,无需依赖窗口子系统/另一个库或编写依赖于系统的代码

目前,我正在编写渲染子系统的OpenGL实现,我想检查是否可以单独使用OpenGL 3.3函数调用获取backbuffer/默认帧缓冲区的大小。我以前使用GLX/WGL编写过代码来实现这一点,不过我希望避免这种情况

我遇到了之前被问到的一个问题:

然而,没有给出结论性的答案。关于获取视口/剪刀区域的宽度/高度的答案只有在窗口从未更改的情况下才有效,这在我的应用程序中很有可能发生,而另一个答案则不起作用,因为“默认”帧缓冲区不是实际的帧缓冲区对象,因此无法进行查询(如果注释者正确)


那么,是否有任何方法可以单独使用OpenGL 3.3动态确定默认帧缓冲区/backbuffer的大小,或者我需要依赖于另一个子系统/编写依赖于平台的代码?

所需的结论性答案?最后的答案是否定的

OpenGL 4.5及其以下所有版本均未提供查询默认帧缓冲区范围的方法。它也没有提供控制其规模的手段


默认帧缓冲区归窗口所有;OpenGL默认的framebuffer对象仅仅是一种使用它的方式。

感谢您快速而果断的回答!我也很害怕,所以在这种情况下,我可能会让用户自己决定。另外,我只想说,每当我需要一个GL标题时,我都在使用glLoadGen,感谢您创建了这样一个很棒的工具!