OpenGL入門(1)——建立一個OpenGL專案

妙妙屋發表於2021-01-04


前言

本系列為OpenGL入門系列,用於記錄自己的學習過程並分享學習經驗。本人是跟隨視訊博主The Cherno釋出的視訊教程進行學習,B站也有搬運過來的視訊最好的OpenGL教程之一,有興趣的朋友可以一同學習。


一、OpenGL是什麼?

OpenGL(英語:Open Graphics Library,譯名:開放圖形庫或者“開放式圖形庫”)是用於渲染2D、3D向量圖形的跨語言、跨平臺的應用程式程式設計介面(API)。

根據視訊裡的內容瞭解到OpenGL實際上是一種用於控制GPU的規範,這一規範獲得了各平臺和軟硬體廠商的認可,同樣也被遵守。但這並不是說他們公用同一套OpenGL,實際上他們各自有自己的OpenGL,針對自身系統或軟硬體有不同程度的優化,且大多為非開源,不過在我們這些呼叫者的眼中,他們表面上所用的呼叫語句基本一樣,實現的效果基本一樣,很容易就認為這是一樣的東西。

二、建立OpenGL專案

1.準備工作

上文說大多數的OpenGL都不是開源的,那有沒有開源的OpenGL呢?答案是肯定的!
這裡我們使用GLFW開源的OpenGL庫進行學習。

進入主頁我們會看到這樣的頁面:
GLFW主頁
可以看到直接就有下載的提示,不過這個是大而全的,而我們想用的是小而美的,適合個人開發使用的。找到右上方“下載”按鈕,點選進入如下頁面:
GLFW
這裡就要根據自己的平臺進行選擇了,本人所用平臺為Windows,可以選擇32位的和64位的。有一點需要知道的是,這裡32位的能在32位和64位的作業系統中執行,64位的只能在64位的作業系統中執行,而且執行的速度據說也差不多,所以為了能適用於更多的作業系統選擇32位的進行下載。
下載並解壓後得到
GLFW WIN32
至此準備工作完成。

2.建立專案

2.1 建立專案檔案

新建專案
在專案下新增Dependencies資料夾,並在資料夾內新增GLFW資料夾,將之前下載的檔案裡的includ檔案和lib-vc2019(本人用的VS為2019版本,這個別的應該也差不多都適用)複製到GLFW資料夾內。
得到如下的專案檔案:
專案資料夾
Dependencies
GLFW
至此完成專案檔案的建立。

2.2 連結OpenGL庫

在VS中資源管理器下右鍵專案
右鍵專案
點選最下方的“屬性”,出現專案屬性頁
找到C/C++下的“常規”裡的“附加包含目錄”,寫入$(SolutionDir)Dependencies\GLFW\include(此處用到了巨集,編譯器會自動對$SolutionDir進行解析得到對應的路徑)

專案屬性頁
找到“連結器”下的“常規”裡的“附加庫目錄”,寫入$(SolutionDir)Dependencies\GLFW\lib-vc2019
附加庫目錄
至此完成OpenGL庫的連結。

2.3 測試

在VS中建立好的OpenGL專案下新建篩選器“src”,用於存放原始碼,在其下新增Applications.cpp
測試
將如下程式碼複製到Applications.cpp中

#include <GLFW/glfw3.h>

int main(void)
{
    GLFWwindow* window;

    /* Initialize the library */
    if (!glfwInit())
        return -1;

    /* Create a windowed mode window and its OpenGL context */
    window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);
    if (!window)
    {
        glfwTerminate();
        return -1;
    }

    /* Make the window's context current */
    glfwMakeContextCurrent(window);

    /* Loop until the user closes the window */
    while (!glfwWindowShouldClose(window))
    {
        /* Render here */
        glClear(GL_COLOR_BUFFER_BIT);

        glBegin(GL_TRIANGLES);
        glVertex2f(-0.5f, -0.5f);
        glVertex2f(0.0f, 0.5f);
        glVertex2f(0.5f, -0.5f);
        glEnd();


        /* Swap front and back buffers */
        glfwSwapBuffers(window);

        /* Poll for and process events */
        glfwPollEvents();
    }

    glfwTerminate();
    return 0;
}

執行得到如下結果即代表OpenGL專案完成建立。
執行結果


總結

以上就是建立一個OpenGL專案的內容,本文僅僅簡單介紹了OpenGL專案的建立,而OpenGL提供了大量能使我們快速便捷地處理圖象的函式和方法,在接下來的文章中會逐步介紹,敬請期待。

相關文章