ETH官方钱包

前往
大廳
主題

【練習(xí)】設(shè)置 OpenGL 並用 C++ 創(chuàng)建 Window 畫(huà)了三角形!(Mac + VS code)

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

前言:

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

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

至於要畫(huà)東西,就要先創(chuàng)建一個(gè) window ,之後就可以寫(xiě)程式讓他在上面畫(huà)。
要實(shí)現(xiàn)創(chuàng)建窗口的話,就用 GLFW 。


start

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

2. 執(zhí)行檔內(nèi)容:去 GLFW 複製 code


3. 找到剛才下載的 GLFW package,把圈起來(lái)的這兩個(gè)東西複製到你的專(zhuān)案裡面,建立資料夾,命名 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 有發(fā)生下面的 linking error ,所以改 CMakeList (上面是改過(guò)的,但我用絕對(duì)路徑,其實(shí)相對(duì)路經(jīng)應(yīng)該就可以)

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 本來(lái)用 libglfw3.a 卡住,所以才改 libglfw3.dylib (靜態(tài)和動(dòng)態(tài) libraries 的差別)

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

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

4.4 加了 GL_SILENCE_DEPRECATION 來(lái)忽略下方警告

/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 依序打上:
#進(jìn)入專(zhuān)案文件夾
cd /Users/Dev/OpenGL

#建立資料夾:build
mkdir build

cd build

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

#產(chǎn)生執(zhí)行檔
cmake --build .

成功產(chǎn)生執(zhí)行檔:

6. 執(zhí)行 ./Application

出現(xiàn) window 了!

畫(huà)三角形!

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

補(bǔ)充 folder 長(zhǎng)這樣

參考:

創(chuàng)作回應(yīng)

相關(guān)創(chuàng)作

更多創(chuàng)作