OpenGL 在Mac 上的配置(根據OpenGL超級寶典第五版)

1.配置前提 需要的資源:

1》CLTools ? 2》glew ?3》libGLTools.a

這三個 我已經下載完了,百度云盤分享:https://pan.baidu.com/s/1i44HwRb

現在 開始配置OpenGl 環境

1.打開xcode(本人的是 xcode8.1) --> macOS ?--> Cocoa Application

2. 添加OpenGL.framework 和 GLUT.framework 兩個系統庫,詳情見圖

3. 添加 CLTools?,glew?,libGLTools.a 這三個已經分享在百度云盤了,自己下

首先添加GLTools ( CLTools 在 /include/ 路徑下? ,glew在 /include/GL/? 路徑下 ,不要改變 文件)的header? search path ,讓你的工程能夠找到頭文件


4. libGLTools.a 直接拖到工程的Frameworks 文件里面,另外刪除文件:AppDelegate.h 、 AppDelegate.m 、? main.m 、ViewController.h 、 ViewController.m ; 創建 main.cpp文件


5. 將下面代碼全部復制到 main.cpp 文件里面 ,運行程序

```

#include <GLShaderManager.h>

#include <GLTools.h>

#include <glut/glut.h>

GLBatch triangleBatch;

GLShaderManager shaderManager;

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

voidChangeSize(intw,inth)

{

glViewport(0,0, w, h);

}

//為程序作一次性的設置

voidSetupRC()

{

//設置背影顏色

glClearColor(0.0f,0.0f,1.0f,1.0f);

//初始化著色管理器

shaderManager.InitializeStockShaders();

//設置三角形,其中數組vVert包含所有3個頂點的x,y,笛卡爾坐標對。

GLfloatvVerts[] = {

-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();

}

//開始渲染

voidRenderScene(void)

{

//清除一個或一組特定的緩沖區

glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT);

//設置一組浮點數來表示紅色

GLfloatvRed[] = {1.0f,0.0f,0.0f,1.0f};

//傳遞到存儲著色器,即GLT_SHADER_IDENTITY著色器,這個著色器只是使用指定顏色以默認笛卡爾坐標第在屏幕上渲染幾何圖形

shaderManager.UseStockShader(GLT_SHADER_IDENTITY,vRed);

//提交著色器

triangleBatch.Draw();

//將在后臺緩沖區進行渲染,然后在結束時交換到前臺

glutSwapBuffers();

}

intmain(intargc,char* argv[])

{

//設置當前工作目錄,針對MAC OS X

gltSetWorkingDirectory(argv[0]);

//初始化GLUT庫

glutInit(&argc, argv);

/*初始化雙緩沖窗口,其中標志GLUT_DOUBLE、GLUT_RGBA、GLUT_DEPTH、GLUT_STENCIL分別指

雙緩沖窗口、RGBA顏色模式、深度測試、模板緩沖區*/

glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA|GLUT_DEPTH|GLUT_STENCIL);

//GLUT窗口大小,標題窗口

glutInitWindowSize(800,600);

glutCreateWindow("Triangle");

//注冊回調函數

glutReshapeFunc(ChangeSize);

glutDisplayFunc(RenderScene);

//驅動程序的初始化中沒有出現任何問題。

GLenumerr = glewInit();

if(GLEW_OK != err) {

fprintf(stderr,"glew error:%s\n",glewGetErrorString(err));

return1;

}

//調用SetupRC

SetupRC();

glutMainLoop();

return0;

}

```

6. 最后的效果


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容