如何获取/设置默认帧缓冲区的宽度和高度?

时间:2015-04-21 06:51:27

标签: opengl opengl-es-2.0 framebuffer

我想知道默认帧缓冲区的维度。 我将设置视图端口读取到特定值不会影响/设置帧缓冲区的尺寸。 是否有GL呼叫?

1 个答案:

答案 0 :(得分:6)

您无法使用OpenGL调用设置默认帧缓冲区的大小。它是窗口的大小,由窗口系统界面(例如Android上的EGL)控制。如果你想控制它,这必须作为初始窗口/表面/上下文设置的一部分,其中细节是平台相关的。

我不知道专门获取默认帧缓冲区大小的调用。但你可以很容易地间接得到它。视口和剪刀矩形的默认值都对应于窗口的大小。因此,如果您在修改之前获得中的任何,它将为您提供窗口的大小。

从第2.12.1节和第34节;控制视口"在规范中:

  

在初始状态下,w和h分别设置为GL进行渲染的窗口的宽度和高度。

从4.1.2和#34; Scissor Test"在规范中:

  

在初始状态下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];