在 macOS 上設定現代 OpenGL 4.1(Xcode GLFW 和 GLEW)
1.安裝 GLFW
第一步是建立一個 OpenGL 視窗。GLFW 是一個開源的多平臺庫,用於使用 OpenGL 建立視窗,安裝 GLFW 首先從 www.glfw.org 下載其檔案
提取 GLFW 資料夾,其內容將如下所示
下載並安裝 CMake 以構建 GLFW。轉到 www.cmake.org/download/ ,下載 CMake 並安裝 MAC OS X.
如果沒有安裝 Xcode。從 Mac App Store 下載並安裝 Xcode。
建立一個新的資料夾中生成的 GLFW 資料夾中
開啟 CMake,單擊 Browse Source 按鈕選擇 GLFW 資料夾(確保 CMakeLists.txt)位於該資料夾內。之後,單擊 Browse Build 按鈕並在上一步中選擇新建立的 Build 資料夾。
現在單擊 Configure 按鈕並選擇 Xcode as generator with Use default native compilers 選項,然後單擊 Done 。
勾選 BUILD_SHARED_LIBS 選項,然後再次單擊“ 配置” 按鈕,最後單擊“ 生成” 按鈕。
生成後,CMake 應該是這樣的
現在開啟 Finder 並轉到 / usr ,建立一個本地資料夾名稱( 如果尚未存在)。開啟本地資料夾並建立兩個資料夾 include 和 lib( 如果尚未存在)。
現在開啟 GLFW 資料夾並轉到 Build (CMake 已經構建了檔案)。在 Xcode 中開啟 GLFW.xcodeproj 檔案。
選擇安裝>我的 Mac ,然後單擊執行 (播放形狀按鈕)。
它現在已成功安裝(忽略警告)。
要確保 Open Finder 和 goto / usr / local / lib 資料夾以及三個 GLFW 庫檔案已經存在(如果沒有那麼開啟 GLFW 資料夾中的 Build 資料夾並轉到 src / Debug 將所有檔案複製到 / usr / local / lib )
開啟 Finder 並轉到 / usr / local / include 和一個 GLFW 資料夾,其中有兩個標頭檔案,名稱為 glfw3.h 和 glfw3native.h
2.安裝 GLEW
GLEW 是一個跨平臺的庫,可以幫助查詢和載入 OpenGL 擴充套件。它提供了執行時機制,用於確定目標平臺上支援哪些 OpenGL 擴充套件。它僅適用於現代 OpenGL(OpenGL 3.2 及更高版本,需要在執行時確定功能)。要安裝,首先從 glew.sourceforge.net 下載其檔案
提取 GLFW 資料夾,其內容將如下所示。
現在開啟終端,導航到 GLEW 資料夾並鍵入以下命令
make
sudo make install
make clean
現在 GLEW 已成功安裝。要確保安裝它的 Open Finder,請轉到 **/ usr / local / include,**並且其中已經存在一個 GL 資料夾,其中包含三個標頭檔案,名稱為 glew.h , glxew.h 和 wglew.h
開啟 Finder 並轉到 / usr / local / lib ,GLEW 庫檔案將在那裡出現
3.測試並執行
現在我們已經成功安裝了 GLFW 和 GLEW。是時候編碼了。開啟 Xcode 並建立一個新的 Xcode 專案。選擇**命令列工具,**然後繼續,選擇 C++ 作為語言。
Xcode 將建立一個新的命令列專案。
單擊專案名稱,然後在 Build Settings 選項卡下從 Basic 切換到 All ,在 Search Paths 部分下,在 Header Search Paths 中新增 / usr / local / include 並在 Library Search Paths 中新增 / usr / local / lib
單擊專案名稱,在 Build Phases 選項卡下,在 Link With Binary Libraries 下新增 OpenGL.framework ,並從 / usr / local / lib 新增最近建立的 GLFW 和 GLEW 庫 ****
現在我們準備使用 C++和 Xcode 在 macOS 上使用 Modern Open GL 4.1 進行編碼。以下程式碼將使用帶有空白螢幕輸出的 GLFW 建立一個 OpenGL 視窗。
#include <GL/glew.h>
#include <GLFW/glfw3.h>
// Define main function
int main()
{
// Initialize GLFW
glfwInit();
// Define version and compatibility settings
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
glfwWindowHint(GLFW_OPENGL_PROFILE,GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
// Create OpenGL window and context
GLFWwindow* window = glfwCreateWindow(800, 600, "OpenGL", NULL, NULL);
glfwMakeContextCurrent(window);
// Check for window creation failure
if (!window)
{
// Terminate GLFW
glfwTerminate();
return 0;
}
// Initialize GLEW
glewExperimental = GL_TRUE; glewInit();
// Event loop
while(!glfwWindowShouldClose(window))
{
// Clear the screen to black
glClearColor(0.0f, 0.0f, 0.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT);
glfwSwapBuffers(window);
glfwPollEvents();
}
// Terminate GLFW
glfwTerminate(); return 0;
}