日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Mac配置OpenGL环境

發(fā)布時(shí)間:2024/8/1 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mac配置OpenGL环境 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

簡(jiǎn)介

入門(mén)學(xué)習(xí)OpenGL,網(wǎng)上查詢OpenGL的配置環(huán)境相關(guān),配置的樣式多種多樣。

但總的來(lái)說(shuō),無(wú)非如下幾個(gè)步驟:

  • 下載gltools、glew、glfw、glut、 glad、glm等庫(kù)文件
  • Xcode中配置Build Settings內(nèi)的Search Header Paths和Search Libary Paths
  • Xcode中配置Build Phases內(nèi)的Link Binary With Libraries

在Mac中,openGL、glut的包,已經(jīng)自帶,無(wú)需關(guān)注。

入門(mén)學(xué)習(xí)使用: Learn OpenGL

環(huán)境:Mac: 10.14.6 Xcode: 11.3.1

語(yǔ)言: C/C++

個(gè)人Demo:OpenGLDemo

brew安裝cmake、glfw、glew

brew是Mac OS平臺(tái)下的軟件包管理工具, 通過(guò)終端命令可以實(shí)現(xiàn)包的安裝,卸載,更新等。
打開(kāi)終端,輸入命令:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安裝成功后會(huì)提示你輸入密碼, 安裝成功后提示: “Installation successful”
常用的命令有:

brew search // 搜索軟件包 brew install // 安裝軟件包 brew uninstall // 卸載軟件包 brew info // 查詢軟件包信息 brew update // 更新 brew deps // 顯示包依賴 brew list // 查詢已經(jīng)安裝的軟件包

倘若因?yàn)榫W(wǎng)絡(luò)不穩(wěn)定,導(dǎo)致安裝失敗,需要對(duì)它進(jìn)行卸載重裝,其命令為:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"

成功安裝brew后, 可直接運(yùn)行如下命令:

// 方式1 brew install cmake glfw glew// 方式2 brew install cmake brew install glfw brew install glew

glfw和glew安裝成功后,路徑都在: /usr/local/Cellar 中
glfw的官網(wǎng):GLFW
glew的官網(wǎng):GLEW

glTools下載

它是《OpenGL 超級(jí)寶典》的作者對(duì)OpenGL接口的一些封裝,在Learn OpenGL上不會(huì)用到。下載

下載并解壓到任意目錄下, 通過(guò)終端命令進(jìn)入該目錄:

cd build cmake .. make sudo make install

如上命令主要做了兩件事:

  • 對(duì)文件進(jìn)行編譯生成庫(kù)文件: libgltools.dylib、libgltools.a
  • 將include文件安裝到**/usr/local/include**中
  • 將庫(kù)文件安裝到**/usr/local/lib**中

GLM下載

OpenGL Mathematics為OpenGL編寫(xiě)的第三方數(shù)學(xué)算法庫(kù)

不依賴其他包, 不需要編譯,下載后直接將頭文件放入指定的目錄即可進(jìn)行引用。

下載地址: glm

使用GLM時(shí),類似示例:

#include <glm/glm.hpp> #include <glm/gtc/matrix_transform.hpp> #include <glm/gtc/type_ptr.hpp>void DebugGLM() {glm::vec4 vec(1.0f, 0.0f, 0.0f, 1.0f);// 譯注:下面就是矩陣初始化的一個(gè)例子,如果使用的是0.9.9及以上版本// 初始化編寫(xiě)為:glm::mat4 trans = glm::mat4(1.0f);// 否則初始化編寫(xiě):glm::mat4 trans;// 如果方式不一致,就會(huì)出現(xiàn)結(jié)果是很大數(shù)字的顯示,切記glm::mat4 trans = glm::mat4(1.0f);trans = glm::translate(trans, glm::vec3(1.0f, 1.0f, 0.0f));vec = trans * vec;std::cout << vec.x << vec.y << vec.z << std::endl; // 210表示正確 }

glad下載

參考: LearnOpenGL 配置GLAD

它是一個(gè)開(kāi)源的庫(kù), 需要打開(kāi)glad的在線服務(wù)進(jìn)行配置,生成后然后下載zip文件即可。在線服務(wù)

  • Language選擇C/C++
  • Specification選擇OpenGL
  • gl選擇版本3.3即可
  • 勾選Generate a loader
  • 確認(rèn)無(wú)誤后,勾選GENERATE

生成成功以后,如下圖:

點(diǎn)擊標(biāo)記部分進(jìn)行下載即可。

環(huán)境配置

  • 打開(kāi)Xcode, 選擇Create a new Xcode Project -> mac OS -> Command Line Tool
  • 創(chuàng)建成功后,點(diǎn)擊右上角Xcode, 點(diǎn)擊Preference, 選擇Locations, 然后選擇Custom Paths
  • 點(diǎn)擊加號(hào)添加配置相關(guān):

    Name Display Name Path glew_header glew_header /usr/local/Cellar/glew/2.1.0/includeglew_lib glew_lib glew_lib /usr/local/Cellar/glew/2.1.0/lib glfw_header glfw_header /usr/local/Cellar/glfw/3.2.1/include glfw_lib glfw_lib /usr/local/Cellar/glfw/3.2.1/lib gltool_header gltool_header /usr/local/include gltool_lib gltool_lib /usr/local/lib

    這些配置,主要用于項(xiàng)目Build Settings下的Header Search Paths和Library Search Paths的配置。比如:

    • Header Search Paths, 配置glew, glfw相關(guān)include,可以使用:$(glew_header) $(glfw_header)
    • Library Search Paths, 配置glew, glfw相關(guān)lib, 可以使用: $(glew_lib) $(glfw_lib)
  • 配置項(xiàng)目Build Phases下的Link Binary With Libraries相關(guān), 這些配置添加后,會(huì)添加到framework中。

    mac系統(tǒng)的自帶有:GLUT.framework、OpenGL.framwork相關(guān),直接搜索添加就可以

    其他的比如glew、glfw相關(guān), 可以點(diǎn)擊Add Other…,選擇add Files…

    通過(guò)快捷鍵Command+Shift+G或者前往文件夾進(jìn)入到/usr/local/目錄,選擇對(duì)應(yīng)包的lib目錄下的.dylib文件。

  • 至此基本的環(huán)境配置算是配置結(jié)束, 在main.cpp粘貼如下代碼:

  • #include <iostream> #include <GL/glew.h> #include <GLFW/glfw3.h>void Render(void) {glClearColor(0.0f, 0.0f, 0.0f, 1.0f);glClear(GL_COLOR_BUFFER_BIT);glBegin(GL_TRIANGLES);{glColor3f(1.0,0.0,0.0);glVertex2f(0, .5);glColor3f(0.0,1.0,0.0);glVertex2f(-.5,-.5);glColor3f(0.0, 0.0, 1.0);glVertex2f(.5, -.5);}glEnd(); }int main(int argc, const char * argv[]) {GLFWwindow* win;if(!glfwInit()) {return -1;}win = glfwCreateWindow(480, 320, "Triganle", NULL, NULL);if(!win) {glfwTerminate();exit(EXIT_FAILURE);}if(!glewInit()) {return -1;}glfwMakeContextCurrent(win);while(!glfwWindowShouldClose(win)){Render();glfwSwapBuffers(win);glfwPollEvents();}glfwTerminate();exit(EXIT_SUCCESS);return 0; }

    效果圖,如下:


    Learn OpenGL GitHub環(huán)境配置

    學(xué)習(xí)OpenGL的過(guò)程中,參考資料是:

    • LearnOpenGL 教程
    • LearnOpenGL Code

    關(guān)于Code的生成步驟:

    • 下載Code
    • 打開(kāi)終端命令,進(jìn)入到目錄中,運(yùn)行命令:
    brew install cmake assimp glm glfw // 通過(guò)brew安裝cmake, assimp, glm, glfw等庫(kù)文件 mkdir build // 創(chuàng)建build文件夾 cd build // 進(jìn)入build目錄 cmake -G "Xcode" .. // cmake生成Xcode項(xiàng)目工程文件
    • 如果Xcode生成項(xiàng)目工程文件的時(shí)候報(bào)錯(cuò),類似如下:
    xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance--[[ 修改方式: 1. 執(zhí)行命令,修改Xcode路徑 sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer/ 2. 執(zhí)行命令 xcodebuild -showsdks 3. 執(zhí)行命令 xcrun --sdk iphoneos --show-sdk-path 4. 顯示類似結(jié)果,表示正確 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.2.sdk 5. 重新執(zhí)行命令: cmake -G "Xcode" .. ]]

    官方示例提供了教程當(dāng)中的所有示例demo相關(guān), 可用于我們學(xué)習(xí),參考。

    建議

    在學(xué)習(xí)OpenGL的過(guò)程,我們會(huì)在Xcode項(xiàng)目創(chuàng)建多個(gè)示例程序,用于學(xué)習(xí)查看各種各樣的效果。

    步驟是: 右上角選擇File -> New -> Target…后, 選擇Command Line Tool新建示例。

    在每個(gè)CLT示例中,需要重復(fù)做如下幾件事:

    • 需要在Build Settings中配置Header Search Paths和Library Search Paths所需要的文件相關(guān)
    • 需要在Build Phases中配置Link Binary With Libraries所需要的庫(kù)文件相關(guān)

    這樣的配置,固然是可以的,但是會(huì)有幾個(gè)問(wèn)題出現(xiàn):

    • OpenGL的某些實(shí)現(xiàn)需要引用一些頭文件相關(guān),他們并不是在usr/local中放置,比如:glad、glm等
    • 配置庫(kù)文件,需要記住一些常用庫(kù)的路徑

    為避免這些問(wèn)題,可以參考著官方示例的目錄結(jié)構(gòu):

    • 將編寫(xiě)的Command Line Tool的示例文件放置到src對(duì)應(yīng)的章節(jié)目錄中
    • 將第三方的.a、.dylib從usr/local中拷貝放到libs目錄文件下
    • 將第三方的.h、.cpp文件分別放置到includes和src目錄中
    • 將資源,shader相關(guān)放置到Resources目錄中

    優(yōu)點(diǎn):

    • 解決引用庫(kù)文件進(jìn)行繁瑣的操作的步驟
    // Header Search Paths $(PROJECT_DIR)/includes// Library Search Paths $(PROJECT_DIR)/libs

    注意:
    如果項(xiàng)目運(yùn)行報(bào)錯(cuò),一般是沒(méi)有獲取到對(duì)應(yīng)的庫(kù)文件
    記得使用命令: brew install glew glfw, 下載成功后,就對(duì)應(yīng)的**.dylib和.a**文件放置到libs目錄內(nèi)

    本人新手,能力有限,如果文章對(duì)您引起了誤導(dǎo),請(qǐng)及時(shí)告知,避免影響更多的人

    總結(jié)

    以上是生活随笔為你收集整理的Mac配置OpenGL环境的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。