我想知道默认帧缓冲区的尺寸。
我将设置 View 端口读取为特定值不会影响/设置帧缓冲区的尺寸。
是否有任何GL要求?

最佳答案

您不能使用OpenGL调用来设置默认帧缓冲区的大小。它是窗口的大小,由窗口系统界面(例如Android上的EGL)控制。如果要控制它,则必须在初始窗口/表面/上下文设置的一部分中进行,其中详细信息取决于平台。

我不知道有一个专门获取默认帧缓冲区大小的调用。但是您可以轻松地间接获得它。视口(viewport)的默认值和剪刀矩形均与窗口的大小相对应。因此,如果您在修改它们之前获得了其中的任何一个,它将为您提供窗口的大小。

在规范的2.12.1节“控制视口(viewport)”中:



在规范的第4.1.2节“剪刀测试”中:



因此,您可以通过以下任一方式获取默认的帧缓冲区大小:

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];

09-25 20:43