簡體   English   中英

SFML和OpenGL 3.3:沒有GLUT的雙重緩沖

[英]SFML & OpenGL 3.3: double buffering without GLUT

我想用SFML和OpenGL 3.3編寫跨平台的3D應用程序(也許是游戲,誰知道),其主要目的是學習C ++。

SFML提供了很酷的事件模型,可以處理紋理,文本,輸入等。我已經完成了關於多維數據集的簡單演示(仍然使用舊的glBegin / glEnd方法,但是當我找到一種附加OpenGL擴展的方法時,我將對其進行修復)。

我得到的第一個問題是雙重緩沖。 如您所知,執行渲染的常用方法(和邏輯方法)使用兩個緩沖區,即顯示緩沖區和渲染緩沖區。 渲染周期在渲染緩沖區上執行,當渲染緩沖區結束時,結果將顯示到顯示緩沖區(或者也許有兩個相同的緩沖區,只是每個周期切換角色,不知道)。 這樣可以防止閃爍和偽影。

問題是,在我看到的任何使用GLUT和諸如glutSwapBuffers功能的OpenGL示例中,都是glutSwapBuffers 如果我理解正確,則雙緩沖是特定於平台的(這對我來說很奇怪,因為我認為必須在OpenGL部分完成),而GLUT之類的東西只會隱藏特定於平台的點。 但是我已經在使用SFML進行上下文和OpenGL初始化。

是否有任何跨平台的方式與SFML一起處理OpenGL雙緩沖? 我在此項目中未使用SFML圖形,但目標是RenderWindow。

SFML可以處理雙重緩沖,但是如果您不使用SFML圖形庫,則必須使用sf::Window實例。

通過調用sf::Window::setActive將窗口設置為OpenGL渲染目標,使用OpenGL函數繪制內容,然后調用sf::Window::display交換后緩沖區,來處理雙緩沖。 可以在SFML API中找到更多信息(鏈接版本為v2.3.2)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM