2015-12-06 92 views
2

我目前正在爲我打算開發的遊戲開發遊戲引擎/框架。我設計的系統儘可能通過抽象類和依賴注入來分離。理想情況下,我的目標是讓每個子系統不依賴引擎的其他部分。是否可以使用OpenGL來確定默認幀緩衝區的大小?

在我的渲染系統中,我想提供將視口和剪刀/裁剪區域重置爲當前綁定目標渲染大小的能力(無論是OpenGL FrameBuffer,Direct3D RenderTarget還是默認backbuffer)而不必讓程序員跟蹤它,而不必依靠窗口子系統/另一個庫或者必須編寫與系統相關的代碼。

目前我編碼渲染子系統的OpenGL實現,我想檢查是否有可能得到使用OpenGL後備緩衝/默認幀緩衝區的大小3.3函數調用單獨的。我以前使用GLX/WGL編寫代碼來做到這一點,儘管我想避免這種情況。

我碰到這個問題以前問: How to get/set the width and height of the default framebuffer?

然而,沒有確鑿的答案給出。關於獲取視口/剪刀區域的寬度/高度的答案只有在窗口永不改變的情況下才起作用,在我的應用程序中它可能非常好,而其他答案將不起作用,因爲「默認」幀緩衝區不是實際的framebuffer對象,因此不能被查詢(因爲這樣(如果評論者是正確的)

那麼,有沒有任何方法來確定使用OpenGL 3.3在飛行中的默認幀緩衝區/ backbuffer的大小,或者我需要依賴於另一個子系統/寫平臺相關代碼?

回答

3

需要結論性答案?結論性回答:第

OpenGL 4.5及其下的所有版本都沒有提供查詢默認幀緩衝區範圍的方法。它也沒有提供控制其大小的手段。

默認的framebuffer屬於窗口; OpenGL的默認framebuffer對象只是一種繪製它的方法。

+1

感謝您的迅速和決定性的答案!我很擔心,所以在這種情況下我可能會把它留給用戶。另外我只是想說,我需要GL頭文件時使用glLoadGen,這要歸功於創建這樣一個夢幻般的工具! – LivePastTheEnd

相關問題