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

时间:2015-12-06 14:07:25

标签: c++ opengl polling framebuffer opengl-3

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

在我的渲染系统中,我想提供将视口和剪刀/剪裁区域重置为当前绑定目标的大小以进行渲染的能力(无论是OpenGL FrameBuffer,Direct3D RenderTarget还是默认的后备缓冲区) )无需让程序员跟踪它,也不必依赖窗口子系统/另一个库或必须编写系统相关代码。

目前我正在编写渲染子系统的OpenGL实现,我想检查是否可以单独使用OpenGL 3.3函数调用来获取backbuffer / default framebuffer的大小。我之前使用GLX / WGL编写过代码,但我想避免这种情况。

我遇到了之前被问过的这个问题: How to get/set the width and height of the default framebuffer?

然而,没有给出确凿的答案。关于获取视口/剪刀区域的宽度/高度的答案仅在窗口永远不会改变时才有效,这在我的应用程序中很可能,而另一个答案不会起作用,因为'默认&# 39; framebuffer不是一个实际的帧缓冲对象,因此不能这样查询(如果评论者是正确的)

那么,是否有任何方法可以单独使用OpenGL 3.3来确定默认帧缓冲区/后台缓冲区的大小,还是需要依赖另一个子系统/写入平台相关代码呢?

1 个答案:

答案 0 :(得分:3)

确定的答案是否合适?最后答复:否。

OpenGL 4.5及其下面的所有版本都没有提供查询默认帧缓冲区范围的方法。它也没有提供控制其大小的手段。

默认的帧缓冲区由窗口拥有; OpenGL默认的帧缓冲对象只是一种绘制方式。