2015-04-21 57 views

回答

3

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

我不知道具体获取默认帧缓冲区大小的调用。但是你可以很容易地间接获得它。视口和剪刀矩形的默认值都对应于窗口的大小。所以如果你在修改它们之前得到其中的任何一个,它会给你窗口的大小。

从部分2.12.1在规范“控制视口”:

在初始状态下,W和H分别被设定为宽度和高度,所述窗的到其中的GL是做它的渲染。

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

在初始状态中左=底部= 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]; 
+0

我从'glGetIntegerv'获得所有四个零,为什么?我的窗口实际上是'640 * 480'。 – MeadowMuffins

相关问题