OpenGL在Mac上環境的搭建

2021-10-24 13:40:15 字數 2693 閱讀 4542

在開始進行opengl環境搭建之前,要先了解下這門語言的特點:

opengl是乙個跨語言和跨平台的圖形程式設計介面,與gpu進行互動,不同的顯示卡廠商負責具體實現(特指安卓,蘋果是統一的顯示卡廠商),因此實現的具體程式也不盡相同。不同的廠商實現的庫可能有所不同,有的函式可能沒有實現,有的包含拓展的實現,而且廠商的實現一般通過動態鏈結庫來提供。

這些細節比較繁瑣,所以我們在開發之前需要先搭建opengl環境(---種菜總得先犁個地吧---),匯入第三方庫檔案,來幫我們處理這些操作。

1.安裝homebrew

開啟終端,輸入命令列:

/usr/bin/ruby -e 「$(curl -fssl

2.安裝cmake

執行命令 :

brew install cmake

3.安裝glew

執行命令:

brew install glew

安裝成功後可以去 /usl/local/cellar/glew目錄下找到glew檔案,把include標頭檔案和libglew.a準備好放入專案中。

2.選中專案檔案 build phases -> link binary with libraries,新增opengl.framework、glut.framework兩個系統庫

3.新增cltools.h、glew.h(在成功demo中都放置在include資料夾中,直接匯入include資料夾即可)、libgltools.a檔案。同時在 bulid settings 搜尋 header search path 直接拖入include資料夾生成路徑。

至此,opengl環境已經配置完成,下面開始在main.cpp檔案裡面寫**:

#include #include "glshadermanager.h"

#include "gltools.h"

#include glbatch ********batch;

glshadermanager shadermanager;

//視窗大小改變時接受新的寬度和高度,其中0,0代表視窗中視口的左下角座標,w,h代表畫素

void changesize(int w,int h)

//為程式作一次性的設定

void setuprc()

; //批次處理

********batch.begin(gl_********s,3);

********batch.copyvertexdata3f(vverts);

********batch.end();

}//開始渲染

void renderscene(void)

; //傳遞到儲存著色器,即glt_shader_identity著色器,這個著色器只是使用指定顏色以預設笛卡爾座標第在螢幕上渲染幾何圖形

shadermanager.usestockshader(glt_shader_identity,vred);

//提交著色器

********batch.draw();

//將在後台緩衝區進行渲染,然後在結束時交換到前台

glutswapbuffers();

}int main(int argc,char* ar**)

//呼叫setuprc

setuprc();

glutmainloop();

return 0;

}

執行**,完美執行。

如果出現了以上的錯誤,是因為.a檔案的存放位置問題。include資料夾跟.a檔案必須存放在同乙個目錄層級下。

Jupyter在mac上環境搭建 踩的坑,記錄一下

每次都安裝失敗,我還以為是我機器問題,不然使用python指令還是原來版本的python 然後 用pyenv local指令設定當前資料夾的python版本又可以了 export pyenv root usr local opt pyenv 這句話讓我鬱悶好一會我的mac貌似有兩個pyenv 加了這...

OpenGL 在Mac上搭建開發環境

因為opengl只能執行在pc環境下。在target link binary with libraries中新增opengl.framework與glut.framework庫。向工程中拖入準好的靜態庫libgltools.a及標頭檔案include。並在build settings header ...

mac下clion glfw glad環境搭建

clion cmake make make install然後會看到glfw安裝到了 usr local lib 95 built target monitors 98 built target events 100 built target icon install the project.ins...