如何获取/设置默认帧缓冲区的宽度和高度?
Posted
技术标签:
【中文标题】如何获取/设置默认帧缓冲区的宽度和高度?【英文标题】:How to get/set the width and height of the default framebuffer? 【发布时间】:2015-04-21 06:51:26 【问题描述】:我想知道我的默认帧缓冲区的尺寸。 我将视口设置为特定值不会影响/设置帧缓冲区的尺寸。 对此有任何 GL 要求吗?
【问题讨论】:
通常是窗口的大小。 【参考方案1】:您无法使用 OpenGL 调用设置默认帧缓冲区的大小。它是窗口的大小,由窗口系统接口控制(例如 android 上的 EGL)。如果你想控制它,这必须作为初始窗口/表面/上下文设置的一部分发生,其中细节取决于平台。
我不知道专门获取默认帧缓冲区大小的调用。但是你可以很容易地间接获得它。视口和剪刀矩形的默认值都对应于窗口的大小。因此,如果您在修改它们之前获得任何这些,它将为您提供窗口的大小。
来自规范中的第 2.12.1 节“控制视口”:
在初始状态下,w 和 h 分别设置为 GL 要在其中进行渲染的窗口的宽度和高度。
来自规范中的第 4.1.2 节“剪刀测试”:
在初始状态left = bottom = 0;宽度和高度由 GL 窗口的大小决定。
因此,您可以使用以下任一方法获取默认帧缓冲区大小:
GLint dims[4] = 0;
glGetIntegerv(GL_VIEWPORT, dims);
GLint fbWidth = dims[2];
GLint fbHeight = dims[3];
或:
GLint dims[4] = 0;
glGetIntegerv(GL_SCISSOR_BOX, dims);
GLint fbWidth = dims[2];
GLint fbHeight = dims[3];
【讨论】:
我从glGetIntegerv
得到四个零,这是为什么呢?我的窗口实际上是640*480
。以上是关于如何获取/设置默认帧缓冲区的宽度和高度?的主要内容,如果未能解决你的问题,请参考以下文章