ETH官方钱包

前往
大廳
主題

[ 練習 ] 設置 OpenGL 並用 C++ 創建 Window 畫了三角形!(Mac + VS code)

緩慢爬行(人類) | 2024-05-10 17:11:01 | 巴幣 2 | 人氣 97

前言:

OpenGL 是 graphic API (application programming interface),
就是一堆函數讓你可以 call 他們做你想做的事,也就是對 graphic 做處理,
OpenGL 讓你可以實際 access 你的 GPU(也就是顯卡),並告訴他怎麼做。

要注意的是,OpenGL 只是一個 specification 不是 library ,他沒有 code,
所以你也不用去下載他,
也就是說實作 OpenGL 取決於 GPU 製造商(ex. NVIDIA, AMD)。

至於要畫東西,就要先創建一個 window ,之後就可以寫程式讓他在上面畫。
要實現創建窗口的話,就用 GLFW 。


start

1. 第一步,下載 GLFW
GLFW 找你需要的 package,我下載這個:
接著,在 VS Code 創建新的資料夾(我的專案名是 OpenGL,路徑放在 Users 底下創一個 Dev)
然後創一個 src 裡面新增 cpp 檔,準備寫執行檔內容。

2. 執行檔內容:去 GLFW 複製 code


3. 找到剛才下載的 GLFW package,把圈起來的這兩個東西複製到你的專案裡面,建立資料夾,命名 Dependencies


4. 建立 CMakeLists.txt 把 header 和 library 的東西都 link 在一起

cmake_minimum_required(VERSION 3.0)
project("OpenGL")


include_directories(include)  

link_directories(
lib-arm64)

# 找到 OpenGL 框架
find_library(OpenGL_LIBRARY OpenGL)

# 禁止 OpenGL deprecated 警告
add_definitions(-DGL_SILENCE_DEPRECATION)

add_executable(
Application src/Application.cpp)

target_link_libraries(
Application libglfw.3.dylib ${OpenGL_LIBRARY})

4.1 有發生下面的 linking error ,所以改 CMakeList (上面是改過的,但我用絕對路徑,其實相對路經應該就可以)

ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [Application] Error 1
make[1]: *** [CMakeFiles/Application.dir/all] Error 2
make: *** [all] Error 2

並且在 properties 加路徑


4.2 本來用 libglfw3.a 卡住,所以才改 libglfw3.dylib (靜態和動態 libraries 的差別)

4.3 缺少 _glClear 的定義如下述,所以有改 CMakeList 去找 OpenGL 框架

Undefined symbols for architecture arm64:
"_glClear", referenced from:
_main in Application.cpp.o

4.4 加了 GL_SILENCE_DEPRECATION 來忽略下方警告

/Users/Dev/OpenGL/src/Application.cpp:26:9: warning: 'glClear' is deprecated: first deprecated in macOS 10.14 - OpenGL API deprecated. (Define GL_SILENCE_DEPRECATION to silence these warnings)

5. 在 terminal 依序打上:
#進入專案文件夾
cd /Users/Dev/OpenGL

#建立資料夾:build
mkdir build

cd build

#執行 CMake,指定資料夾:OpenGL(裡面有CMakeLists.txt,依據這個文件去跑)
cmake /Users/Dev/OpenGL

#產生執行檔
cmake --build .

成功產生執行檔:

6. 執行 ./Application

出現 window 了!

畫三角形!

done
我真的菜,linking error 研究很久,好險有 ChatGPT 和 Claude 3 救我ˊ ˋ

補充 folder 長這樣

參考:

創作回應

更多創作