OpenGL入門 — MAC環(huán)境搭建
資源文件
- CLTools
- glew
-
libGLTools.a
資源包下載地址:百度云盤:meni
資源文件準(zhǔn)備好了之后,接下來(lái)就可以開始搭建項(xiàng)目啦!
搭建項(xiàng)目
-
打開 xcode ,選擇macOS下面的App去創(chuàng)建工程
- Snip20200702_3.png
添加系統(tǒng)依賴庫(kù)以及資源文件
添加系統(tǒng)依賴庫(kù)
找到你的 TARGETS 在Build Phases 的 Link Binary With Libaraies下添加一下兩個(gè)系統(tǒng)庫(kù)
OpenGl.framework
-
GLUT.framework
- Snip20200702_4.png
添加資源文件
添加include文件夾和libGLTools.a文件
將我們解壓后的資源文件include和libGLTools.a文件直接拖到工程目錄下
include
-
libGLTools.a
- Snip20200702_7.png
添加GLTools.h和glew.h文件
在 Build Settings 輸入Header Search path 在這個(gè)里面拖入GLTool.h 和 glew.h 生成路徑
GLTool.h
-
glew.h
- Snip20200702_12.png
刪除不需要的文件,并且創(chuàng)建main.cpp文件
- 刪除文件:
- AppDelegate.h
- AppDelegate.m
- ViewController.h
- ViewController.m
- main.m
-
創(chuàng)建main.cpp文件
- Snip20200702_13.png
- Snip20200702_15.png
最后貼一段示例代碼
#include "GLShaderManager.h"
#include "GLTools.h"
#include <glut/glut.h>
GLBatch triangleBatch;
GLShaderManager shaderManager;
//窗口大小改變時(shí)接受新的寬度和高度,其中0,0代表窗口中視口的左下角坐標(biāo),w,h代表像素
void ChangeSize(int w,int h){
glViewport(0,0, w, h);
}
//為程序作一次性的設(shè)置
void SetupRC() {
//設(shè)置背影顏色
glClearColor(0.0f,0.0f,1.0f,1.0f);
//初始化著色管理器
shaderManager.InitializeStockShaders();
//設(shè)置三角形,其中數(shù)組vVert包含所有3個(gè)頂點(diǎn)的x,y,笛卡爾坐標(biāo)對(duì)。
GLfloat vVerts[] = {
-0.5f,0.0f,0.0f,
0.5f,0.0f,0.0f,
0.0f,0.5f,0.0f,
};
//批次處理
triangleBatch.Begin(GL_TRIANGLES,3);
triangleBatch.CopyVertexData3f(vVerts);
triangleBatch.End();
}
//開始渲染
void RenderScene(void) {
//清除一個(gè)或一組特定的緩沖區(qū)
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT);
//設(shè)置一組浮點(diǎn)數(shù)來(lái)表示紅色
GLfloat vRed[] = {1.0f,0.0f,0.0f,1.0f};
//傳遞到存儲(chǔ)著色器,即GLT_SHADER_IDENTITY著色器,這個(gè)著色器只是使用指定顏色以默認(rèn)笛卡爾坐標(biāo)第在屏幕上渲染幾何圖形
shaderManager.UseStockShader(GLT_SHADER_IDENTITY,vRed);
//提交著色器
triangleBatch.Draw();
//將在后臺(tái)緩沖區(qū)進(jìn)行渲染,然后在結(jié)束時(shí)交換到前臺(tái)
glutSwapBuffers();
}
int main(int argc,char* argv[]){
//設(shè)置當(dāng)前工作目錄,針對(duì)MAC OS X
gltSetWorkingDirectory(argv[0]);
//初始化GLUT庫(kù)
glutInit(&argc, argv);
/*初始化雙緩沖窗口,其中標(biāo)志GLUT_DOUBLE、GLUT_RGBA、GLUT_DEPTH、GLUT_STENCIL分別指
雙緩沖窗口、RGBA顏色模式、深度測(cè)試、模板緩沖區(qū)*/
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA|GLUT_DEPTH|GLUT_STENCIL);
//GLUT窗口大小,標(biāo)題窗口
glutInitWindowSize(800,600);
glutCreateWindow("Triangle");
//注冊(cè)回調(diào)函數(shù)
glutReshapeFunc(ChangeSize);
glutDisplayFunc(RenderScene);
//驅(qū)動(dòng)程序的初始化中沒(méi)有出現(xiàn)任何問(wèn)題。
GLenum err = glewInit();
if(GLEW_OK != err) {
fprintf(stderr,"glew error:%s\n",glewGetErrorString(err));
return 1;
}
//調(diào)用SetupRC
SetupRC();
glutMainLoop();
return 0;
}
注:編譯的時(shí)候報(bào)錯(cuò),將文件的系統(tǒng)引入<>,改為普通引入“”
效果圖:
- Snip20200702_16.png
以上就是 OpenGL 的MAC環(huán)境搭建,不足之處還請(qǐng)大家多多指正,喜歡的小伙伴們,別忘了點(diǎn)波關(guān)注哦~~






