2015-04-21 80 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

相關問題