激情六月丁香婷婷|亚洲色图AV二区|丝袜AV日韩AV|久草视频在线分类|伊人九九精品视频|国产精品一级电影|久草视频在线99|在线看的av网址|伊人99精品无码|午夜无码视频在线

高校合作1:010-59833514 ?咨詢電話:400-810-1418 服務(wù)與監(jiān)督電話:400-810-1418轉(zhuǎn)接2

OpenGL游戲引擎開發(fā)第三章(GLFW創(chuàng)建游戲窗口)

發(fā)布時(shí)間:2024-05-23 13:37:05 瀏覽量:159次

讓我們來(lái)嘗試讓GLFW正常運(yùn)行。首先,新建一個(gè).cpp文件,然后將以下代碼粘貼到文件的最前面:

#include <glad/glad.h>#include <GLFW/glfw3.h>

在包含GLFW的頭文件之前,請(qǐng)務(wù)必確保包含了GLAD的頭文件。GLAD的頭文件包含了正確的OpenGL頭文件,因此需要在其他依賴于OpenGL的頭文件之前包含GLAD。接下來(lái),我們創(chuàng)建main函數(shù),在其中實(shí)例化GLFW窗口:

int main(){    glfwInit();    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);    return 0;}

首先調(diào)用glfwInit函數(shù)初始化GLFW,在main函數(shù)中使用glfwWindowHint函數(shù)配置GLFW。glfwWindowHint函數(shù)的第一個(gè)參數(shù)表示選項(xiàng)的名稱,可以從以GLFW_開頭的枚舉值中選擇;第二個(gè)參數(shù)是整數(shù)值,用于設(shè)置該選項(xiàng)的值。所有選項(xiàng)及其對(duì)應(yīng)值可以在GLFW的窗口處理文檔中找到。如果您在編譯cpp文件時(shí)遇到大量未定義的引用錯(cuò)誤,請(qǐng)檢查是否成功鏈接了GLFW庫(kù)。

因?yàn)楸菊镜慕坛袒贠penGL 3.3版本進(jìn)行討論,所以我們需要告訴GLFW我們要使用的OpenGL版本是3.3。這樣GLFW在創(chuàng)建OpenGL上下文時(shí)會(huì)做出適當(dāng)?shù)恼{(diào)整,同時(shí)還可以確保在沒有適當(dāng)?shù)腛penGL版本支持的情況下無(wú)法運(yùn)行。我們將主版本號(hào)和次版本號(hào)都設(shè)置為3。此外,明確告訴GLFW我們使用的是核心模式是確保我們只使用OpenGL功能的子集,沒有不需要的向后兼容特性。

...

渲染

我們需要將所有渲染操作放入渲染循環(huán)中,以便在每次迭代中執(zhí)行這些渲染指令。代碼示例如下:

// 渲染循環(huán)while(!glfwWindowShouldClose(window)){    // 輸入    processInput(window);    // 渲染指令    ...    // 檢查并調(diào)用事件,交換緩沖    glfwPollEvents();    glfwSwapBuffers(window);}

為了測(cè)試一切都正常工作,我們使用一種自定義顏色清空屏幕。在每個(gè)新的渲染迭代開始時(shí),我們總是希望清除屏幕,以避免看到上一次迭代的渲染結(jié)果。我們可以調(diào)用glClear函數(shù)來(lái)清空屏幕的顏色緩沖,該函數(shù)接受一個(gè)緩沖位來(lái)指定要清空的緩沖。在這里,我們將屏幕設(shè)置為類似黑板的深藍(lán)綠色。

以上是對(duì)GLFW創(chuàng)建游戲窗口和渲染的簡(jiǎn)要介紹。希望本文能幫助您順利運(yùn)行GLFW并進(jìn)行基本的渲染操作。如果您看到一個(gè)無(wú)聊的黑色窗口,那就對(duì)了!

輸入

我們還希望在GLFW中實(shí)現(xiàn)一些輸入控制。這可以通過(guò)使用GLFW的幾個(gè)輸入函數(shù)來(lái)實(shí)現(xiàn)。我們將使用glfwGetKey函數(shù),它需要一個(gè)窗口和一個(gè)按鍵作為輸入。這個(gè)函數(shù)將返回按鍵是否被按下。我們將會(huì)創(chuàng)建一個(gè)processInput函數(shù)來(lái)處理所有輸入。

接下來(lái),在每個(gè)渲染迭代中調(diào)用processInput函數(shù):

while (!glfwWindowShouldClose(window)){    processInput(window);    glfwSwapBuffers(window);    glfwPollEvents();}

這樣我們就能簡(jiǎn)單地檢測(cè)特定的鍵是否被按下,并在每一幀進(jìn)行處理。

渲染

為了測(cè)試一切都正常工作,我們使用一種自定義顏色清空屏幕。在每個(gè)新的渲染迭代開始時(shí),我們總是希望清除屏幕,以避免看到上一次迭代的渲染結(jié)果。我們可以調(diào)用glClear函數(shù)來(lái)清空屏幕的顏色緩沖。

glClearColor(0.2f, 0.3f, 0.3f, 1.0f);glClear(GL_COLOR_BUFFER_BIT);

以上是關(guān)于創(chuàng)建游戲窗口和渲染的詳細(xì)介紹。我們希望這些內(nèi)容能幫助您順利運(yùn)行GLFW并進(jìn)行基本的渲染操作。祝您順利!

熱門課程推薦

熱門資訊

請(qǐng)綁定手機(jī)號(hào)

x

同學(xué)您好!

您已成功報(bào)名0元試學(xué)活動(dòng),老師會(huì)在第一時(shí)間與您取得聯(lián)系,請(qǐng)保持電話暢通!
確定