學習3D特效前的準備階段:使用mac系統,基於cmake搭建OpenGL環境

2021-01-08 軟體技術分享

工作中越來越多的需求是要將數據以3D的形式展示給用戶,但是在實現3D特效之前,都需要有一個準備階段。OpenGL規範描述了繪製2D和3D圖形的抽象API,正所謂「工欲善其事必先利其器」,所以,學習OpenGL之前,當然是需要搭建好運行的環境。

今年的目標就是熟練掌握好OpenGL的入門知識,之前由於工作的原因,遲遲無法開展,今天終於抽空搭建好了OpenGL環境。

搭建OpenGL環境過程中,也是花費了不少時間,特別是基於cmake來搭建OpenGL的環境,網絡上的資料很少,並且也沒找到成功的例子,因此,這裡將搭建的過程分享出來。希望能夠對大家有一定的參考價值。

本文首先會介紹搭建OpenGL環境之前的準備條件,然後再總體說明搭建的流程,接著再針對每個流程進行詳細的說明。這裡不會涉及太多專業術語,本文的目的就是要快速搭建好環境,方便後續的學習和工作的開展。

一、準備條件

本文OpenGL環境是在mac系統搭建,並且採用cmake來組織編譯環境,使用的IDE工具是QtCreator 4.9.1, mac作業系統的版本是10.13.6。

搭建opengl環境的大致步驟為,構建glfw、構建glad, 連結系統自帶的OpenGL庫。

glfw的作用是創建OpenGL上下文、定義窗口參數以及處理用戶輸入。

glad根據版本加載所有相關的OpenGL函數。

OpenGL庫則是實現了實現了規範的抽象API的集合。

二、創建工程

使用qtcreator工具來創建C++工程,工程名稱為StudyOpengl

然後選擇cmake來編譯系統,其他按照默認進行操作即可

三、構建GLFW

官方網站上下載glfw的原始碼包,其代碼的目錄結構如下圖所示

然後使用qtcreator來打開glfw原始碼包中的CMakeLists.txt, 目的就是使用qtcreator來編譯glfw代碼,並生成靜態庫。

加載成功glfw的工程目錄

選中工程根目錄,然後右鍵彈出的菜單,點擊「構建」選項

如果編譯成功,那麼在編譯目錄下能夠看到名稱為libglfw3的靜態庫

最後將glfw的頭文件和靜態庫拷貝到工程StudyOpengl下,到這裡,glfw的構建工作已經完成,後面還需要添加glfw的頭文件和庫的搜索路徑,這個等到整體編譯的時候,再統一進行說明。

四、構建GLAD

構建glad, 為了方便,我們這裡直接使用網絡上提供的在線服務來進行創建,具體的在線服務可以網絡上進行搜索。

進入glad的在線服務頁面如下所示,語言選擇C/C++, API版本選擇最新的為4.6, Profile下選擇Core

拖動頁面到最底部,勾選「Generate a loader」選項,然後點擊「GENERATE」

等待片刻,即可生成glad的壓縮包,將壓縮包裡面的include文件夾和glad.c文件拷貝到工程StudyOpengl, 至此,glad的構建工作也完成,添加頭文件和庫的搜索路徑也等到整體編譯的時候,再統一說明。

五、連結OpenGL

連結OpenGL,我覺得是最重要的一步,這是自己摸索出來的解決方法。這裡連結是mac系統自帶的opengl庫。

項目工程StudyOpengl中的CMakeLists.txt文件中,添加搜索OpenGL庫的路徑,創建變量來保存Cocoa、CoreVideo、IOKit的庫路徑

接著添加opengl的頭文件搜索路徑

最後將OpenGL、Cocoa、CoreVideo、IOKit的庫連結到工程。

六、整體編譯

cmake文件增加glad和glfw的頭文件搜索路徑,首先創建函數include_sub_directories_recursively,該函數的功能是遞歸的將輸入路徑下的所有目錄添加到頭文件的搜索路徑

添加完成頭文件的搜索路徑之後,接下來就來添加庫的搜索路徑,同樣的,實現函數link_sub_directories_recursively用於將輸入路徑下的所有目錄都添加到庫的搜索路徑中。

最後記得將libglfw3.a的靜態庫連結到工程中

為了測試環境是否生效,使用網絡上一位大神寫的代碼來進行測試,直接將以下代碼拷貝到main.cpp文件。

不出意外的話,編譯運行之後,可以看到如下所示的效果

六、概括總結

至此,基於mac系統,通過cmake搭建OpenGL環境已經完成。我們再來梳理下,首先通過qtcreator創建工程,接著構建glfw和glad, 然後添加glfw、glad、opengl的頭文件搜索路徑,最後連結glfw庫和opengl的相關庫。最後一點需要注意下,就是要確定glad.c文件編譯進工程,否則可能會出現奇怪的編譯錯誤提示信息。

相關焦點

  • 使用mac系統,基於cmake搭建OpenGL環境
    工作中越來越多的需求是要將數據以3D的形式展示給用戶,但是在實現3D特效之前,都需要有一個準備階段。OpenGL規範描述了繪製2D和3D圖形的抽象API,正所謂「工欲善其事必先利其器」,所以,學習OpenGL之前,當然是需要搭建好運行的環境。
  • 給想要學習3D特效的你
    隨著科技發展,現在3D特效已經越來越普及,比如3D電影、虛擬實境等都應用到各種各樣的3D特效。對於愛好編程的人來說,能夠自主實現絢麗多彩的3D特效是很棒的事情。但是,萬事開頭難,很多人都下不了決心來啃這塊骨頭,別猶豫了,跟著我一起學習,進入3D的世界吧。
  • vscode不寫一行配置,用cmake傻瓜式搭建C++編譯調試環境
    網上看了一些用vscode+cmake搭建C++編譯調試環境的帖子,基本差不多,都要寫一個配置文件。其實根本不用這麼麻煩。安裝的工具是一樣的,但是操作可以更加簡單。VSCode + CMake超簡單用法首先安裝好平臺上的C++編譯器,這裡不多說。
  • CMake 入門學習2 使用VSCode cmake插件
    一、準備環境vscodegccgdbcmakevscode 安裝插件:CMake Tools新建一個目錄mkdir -p d:/documents/cmake新建一個main.cpp文件:#include
  • 實戰經驗:CentOS環境下搭建OpenCV開發環境
    上一節我們學習了在CentOS環境下搭建VLC開發環境,今天我們來看看如何在CentOS環境下搭建OpenCV開發環境。本文所述測試環境OS:CentOS 7.3OpenCV: 3.3.1一.編譯OpenCV源碼包# mkdir build# cd build# cmake ..# make install五. 驗證OpenCV安裝OpenCV的開發頭文件默認會安裝到/usr/local/include/opencv2下,庫文件會默認安裝到/usr/local/lib。
  • Linux CMake 快速使用(一)
    緣起:之前給別人提供的SDK都是在Linux下使用Qt搭建的,但是最近有客戶不使用Qt,而是需要在Linux下使用cmake進行進行文件組織。於是我就進行谷歌,現在將可用的程序記錄下來。平時直接使用IDE開發,所以對整個編譯的過程了解得不深入,藉此機會,在接下來的文章中可能會涉及到程序如何從文本文件到屏幕上的字節流輸出。系統平臺:ubuntu16.04 _x64一、最簡單的CMake編寫1.
  • Linux下GNU Radio平臺的搭建以及該如何使用NI USRP設備
    環境搭建 2.1 安裝Ubuntu系統 我們常用的電腦都是Windows系統的,有兩種方法在電腦上運行Linux。第一種方法是安裝雙系統,第二種方法是安裝虛擬機並在虛擬機中安裝Linux,由於方法二不需要額外分區、更改BIOS等操作、在操作不當時也不會導致Windows的崩潰,因此選用方法二。 這裡使用了常見的虛擬機軟體 VMware Workstation。
  • Qt構建系統qmake將逐漸被取代!新的構建系統為CMake
    使用配置或普通CMake目前,qmake構建系統仍然存在。您可以在使用qmake或CMake構建Qt之間進行選擇。通過-cmake配置以使用基於CMake的生成。對於最終版本,預計qmake構建系統將隨著pass-cmake的需要而消失。
  • 基於Qt ffmpeg opengl開發的跨平臺安卓實時投屏軟體
    碼雲地址:gitee.com/Barryda/QtScrcpyGithub地址:github.com/barry-ran/QtScrcpy基於Qt ffmpeg opengl實現了安卓手機實時投屏到電腦端
  • Windows系統安裝CMake教程
    安裝OpenVINO之前需要先安裝Cmake 本文引用地址:http://www.eepw.com.cn/article/202008/416679.htm環境:Windows 64位首先下載CMake
  • mac OS 下超詳細搭建 Appiumm 自動化測試環境
    現在很多公司,尤其是研發團隊開始使用mac OS了,測試團隊也不列外。所以,特意寫下 mac OS 下自動化測試的各種環境搭建吧,計劃分期寫,感興趣的持續關注。Appium 在 mac OS 環境搭建Appium 一年之前相比,有了很大的改變1、iOS 9 之前一直以 instruments 下的 UIAutomation 為驅動底層技術(弊端由於 instruments 的限制,單臺 mac 只能對應單臺設備);2、iOS 9.3
  • Cmake學習總結(二) - OFweek電子工程網
    大家好,上次給大家分享了第一篇 cmake 文章:cmake學習總結(一),今天繼續給大家分享cmake。那麼廢話就不多說,開始內容分享。用好 Cmake,高興一整天(甚至……):1、多個源文件,使用命令 aux_source_directory(dir var):在上一篇文章最後結尾的時候,有一個問題,就是在同一目錄下面,有多個源文件的時候,這個時候你不能都往下面第三條命令裡面一直手動添加源文件,那工作效率多低啊:cmake_minimum_required
  • 「機器學習」視頻3D效果實現
    使用FPN處分割的分支預測的權值和prorotype mask結合,生成每一個anchor對應的mask分割結果。三、實現使用基於NCNN開源庫的實現,NCNN是一個為手機端極致優化的高性能神經網絡前向計算框架,無第三方依賴且跨平臺。
  • Cmake學習總結(三)
    /binroot@txp-virtual-machine:/home/txp/testmy/bin# lsmain注意這裡是切換到build目錄下去執行cmake哈。 這裡為啥這樣做呢,我們課可以看到在build目錄下執行cmake ..
  • 基於CSS3白色質感3D按鈕特效源碼
    特效介紹這是一款css3白色質感3D按鈕特效。該按鈕使用svg做為圖標,通過css3代碼,打造出非常炫酷的3d按鈕效果。基於CSS3白色質感3D按鈕特效源碼使用方法
  • 使用Django搭建個人博客
    搭建開發環境本教程使用的系統是MacOS系統,Python版本3.8,Django版本2.1。Python和Django儘可能保持和教程一致的版本。可以百度搜索如何設置python環境變量建議使用虛擬環境 (virtualenv)virtualenv 是一個創建隔絕的Python環境的工具。virtualenv創建一個包含所有必要的可執行文件的文件夾,用來使用Python工程所需的包。
  • 是不是覺得Makefile很繁瑣,一個cmake文件就可以解決
    linux編譯程序的時候,通常是使用Makefile文件來進行編譯,這個是能夠提高效率的,但是對於大中型的項目,每個文件夾下都需要創建Makefile,並且改變項目目錄結構都需要調整Makefile文件,如果是小型項目的話,那花費的時間還是能夠接受的,但是大中型項目要調整目錄結構,這個工作量還是不小的。所以,我們可以通過使用cmake來解決這樣的問題。
  • Cmake 3.18.2 發布,開源構建系統
    CMake 3.18.2 已經發布,CMake 是一個跨平臺的自動化構建系統,它使用一個名為 CMakeLists.txt 的文件來描述構建過程,可以產生標準的構建文件,如 Unix 的 Makefile
  • JavaJniProject的創建和使用
    jni的創建和使用環境(此處的作業系統,只能是linux(默認) 或mac)安裝jdk,配置好環境變量.安裝cmake用來編譯動態庫說明:工程是gradle構建的工程.可以使用idea打開.System.loadLibrary(libname)方法,傳入放入系統工作空間裡實現的動態庫名字此處僅只能絕對路徑public JniUtils(String libPath) { System.load(libPath); }3 生成 c 頭文件javah -classpath JniModule/src/main/java -o JniModule/jni
  • 基於華為eNSP網絡抓包環境搭建
    在學習網絡的時候我們可能需要做一些實驗,如果有真實的實驗環境最好,但大部分時候可能只有一臺計算機可用,怎麼辦?一個很容易想到的辦法就是使用虛擬環境,這裡有2個思路。(1) 安裝虛擬機(VMWare等),在虛擬中克隆多個系統,每個系統相當於一個真實的計算機,在每個虛擬的系統上安裝wireshark進行抓包實驗。