最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

創(chuàng)建一個窗口

2023-07-19 21:54 作者:追逐彗星的尾巴  | 我要投稿

窗口

在創(chuàng)建窗口之前,首先需要使用glfwInit()來初始化GLFW庫,若成功返回GLFW_TRUE,失敗返回GLFW_FALSE。如果該函數(shù)失敗,它還會在返回之前調用glfwTerminate()。如果成功,你應該在應用程序退出之前手動調用glfwTerminate()。在成功初始化但應用程序尚未終止之前,對該函數(shù)的額外調用將立即返回GLFW_TRUE。

初始化之后,應使用glfwWindowHint()來配置GLFW。它有兩個參數(shù),第一個是需要配置的選項的名稱,第二個是選項的值。一般會選擇配置GLFW的版本和使用模式。

接下來使用glfwCreateWindow()創(chuàng)建一個窗口對象。

glfwCreateWindow()的前三個參數(shù)分別是窗口的寬度、高度和標題;第四個參數(shù)是用于全屏顯示的監(jiān)視器(可以為NULL,表示窗口化),第五個參數(shù)是與新創(chuàng)建的窗口共享資源的窗口(可以為NULL)。如果窗口創(chuàng)建成功,返回一個指向GLFWwindow對象的指針,否則返回NULL。

創(chuàng)建好窗口之后,我們就需要使用函數(shù)glfwMakeContextCurrent()把這個窗口的上下文設置為當前線程的主上下文(一個應用程序可以同時創(chuàng)建多個窗口,每個窗口都有一個對應的上下文)。

視口

視口(Viewport)是指OpenGL渲染的目標窗口上的可見區(qū)域。我們用glViewport()設置視口的大小和位置。

x和y是視口左下角在窗口中的坐標位置,后兩個參數(shù)是視口的寬度和高度。

注意:OpenGL的寬和高的坐標范圍都只有-1到1,它使用glViewport進行位置坐標和屏幕坐標的轉換。

當用戶改變窗口大小時,視口也應該被調整。glfwSetFramebufferSizeCallback()用于設置幀緩沖大?。◣彌_是用于存儲渲染的圖像的內存區(qū)域,即繪制區(qū)域的高和寬)變化時的回調函數(shù)。

回調函數(shù)callback可以這樣定義:

渲染循環(huán)

我們需要程序在關閉前不斷繪制圖像并能夠接受用戶輸入。因此,需要在程序中添加一個while循環(huán),即渲染循環(huán)(Render Loop)。

glfwPollEvents的作用是檢查并處理當前窗口的所有待處理事件,例如鍵盤輸入、鼠標輸入、窗口大小調整等。

glfwSwapBuffers的作用是交換雙緩沖區(qū)的內容。在雙緩沖機制中,繪圖操作實際上是在一個后臺緩沖區(qū)中進行的,而不是直接在屏幕上繪制。當繪制完成后,glfwSwapBuffers會將后臺緩沖區(qū)的內容與前臺緩沖區(qū)進行交換,使得繪制結果能夠顯示在屏幕上。

——————————————————————————————————————

單緩沖(Single Buffer):在單緩沖機制中,繪制操作直接在屏幕上進行,而不是在后臺緩沖區(qū)。生成的圖像不是一下子被繪制出來的,而是按照從左到右,由上而下逐像素地繪制而成的。這導致繪制較慢或復雜的圖形時,可能會產(chǎn)生可見的閃爍現(xiàn)象。這是因為在繪制一幀完成之前,用戶可能會看到繪制過程中的不完整或部分繪制的圖像。此外,如果在屏幕上的繪制操作正在進行時,用戶對窗口進行了移動、最小化或最大化等操作,可能會導致圖像撕裂。

雙緩沖(Double Buffer):雙緩沖使用兩個緩沖區(qū)——前臺緩沖區(qū)和后臺緩沖區(qū)。繪制操作首先在后臺緩沖區(qū)進行,然后通過交換緩沖區(qū),將后臺緩沖區(qū)的內容復制到前臺緩沖區(qū)并顯示在屏幕上。這樣可以避免閃爍、撕裂等問題,提供更平滑更真實的繪圖效果。

——————————————————————————————————————

退出程序

渲染循環(huán)結束后需要正確釋放和刪除已分配的所有資源——通過調用函數(shù)glfwTerminate()

創(chuàng)建一個窗口的評論 (共 條)

分享到微博請遵守國家法律
怀宁县| 德庆县| 兴宁市| 苍梧县| 克山县| 桐城市| 庆阳市| 讷河市| 任丘市| 建昌县| 赣榆县| 黑龙江省| 会宁县| 通州区| 榆树市| 建湖县| 铁岭县| 南通市| 和平县| 于都县| 措勤县| 汶川县| 栾川县| 桐庐县| 商城县| 肥西县| 廉江市| 耿马| 阿拉善盟| 博爱县| 大田县| 肇庆市| 西丰县| 会宁县| 常德市| 肇庆市| 尉犁县| 金乡县| 仙游县| 东乌珠穆沁旗| 丰都县|