如何在OpenGL中获取后备缓冲区的大小?

时间:2011-04-26 21:21:54

标签: opengl

是否有标准方法,仅使用OpenGL函数来获取后备缓冲区的大小(以像素为单位)?我发现的最接近的是查询视口的大小,但我怀疑它总是匹配后备缓冲区的大小。我正在寻找我可以提供给glReadPixels的最大宽度和高度值,例如。

1 个答案:

答案 0 :(得分:1)

后备缓冲区是窗框缓冲平面设置的一部分(正面颜色,背面颜色,深度,模板等,具体取决于配置的内容)。由于它们都属于一体,因此它们都具有相同的尺寸。由于标准帧缓冲区绑定到可见窗口,因此可访问部分由窗口尺寸确定。

然而,有一件重要的事情需要注意:窗口的帧缓冲区(或曾经是)只是屏幕帧缓冲区的一部分。如果窗口被移动或调整大小,则屏幕帧缓冲区中的切片的偏移和步幅会发生变化。这也意味着如果窗口(部分地)被另一个窗口阻挡,则窗口的遮挡部分对帧缓冲没有贡献。从其他窗口部分覆盖的帧缓冲区读取,您可能会得到未定义的内容,或者遮挡窗口的内容。

在现代操作系统上,窗口被渲染到不能遮挡的屏幕外区域,以支持合成窗口管理。