????????????????????????????搭建Mac OS環(huán)境下的Open GL環(huán)境
由于這篇文章創(chuàng)建是使用富文本編輯器的所以代碼部分有問題。
1.創(chuàng)建項目
? ? 新建一個project闷祥,選擇MacOS中的App,輸入project Name
2.添加OpenGL.framework和GLUT.framework
3.下載并導(dǎo)入include與libGLTools.a
? ? ????文件已上傳百度網(wǎng)盤八酒,下載鏈接: https://pan.baidu.com/s/1kA6VPeqw_IfgKMj3EwFtug 提取碼: ik1e嫁怀,需要的朋友可以下載。
include文件夾直接導(dǎo)入項目目錄先梗夸,libGLTools.a需要放在項目的Frameworks文件夾下
4.Bulid Settings 中輸入 Header Search path中拖入include生成路徑
5.刪除項目中的AppDelegate.h 层玲、AppDelegate.m 、main.m反症、ViewController.h辛块、ViewController.m文件
6.創(chuàng)建main.cpp文件
? ? ? ? 新建文件選擇macOS中的C++ File,輸入文件名main并取消頭文件勾選選項
7.運行測試代碼驗證結(jié)果
? ? ? ? 將以下代碼復(fù)制粘貼到main.cpp文件中
#include "GLShaderManager.h"
#include "GLTools.h"
#include
GLBatch triangleBatch;
GLShaderManager shaderManager;
//窗口大小改變時接受新的寬度和高度铅碍,其中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個頂點的x,y,笛卡爾坐標(biāo)對尘盼。
? ? 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();
}
//開始渲染
void RenderScene(void)
{
? ? //清除一個或一組特定的緩沖區(qū)
? ? glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT);
? ? //設(shè)置一組浮點數(shù)來表示紅色
? ? GLfloatvRed[] = {1.0f,0.0f,0.0f,1.0f};
? ? //傳遞到存儲著色器憨愉,即GLT_SHADER_IDENTITY著色器,這個著色器只是使用指定顏色以默認(rèn)笛卡爾坐標(biāo)第在屏幕上渲染幾何圖形
? ? shaderManager.UseStockShader(GLT_SHADER_IDENTITY,vRed);
? ? //提交著色器
? ? triangleBatch.Draw();
? ? //將在后臺緩沖區(qū)進(jìn)行渲染卿捎,然后在結(jié)束時交換到前臺
? ? glutSwapBuffers();
}
intmain(intargc,char* argv[])
{
? ? //設(shè)置當(dāng)前工作目錄配紫,針對MAC OS X
? ? gltSetWorkingDirectory(argv[0]);
? ? //初始化GLUT庫
? ? glutInit(&argc, argv);
? ? /*初始化雙緩沖窗口,其中標(biāo)志GLUT_DOUBLE午阵、GLUT_RGBA躺孝、GLUT_DEPTH、GLUT_STENCIL分別指
?? ? 雙緩沖窗口底桂、RGBA顏色模式植袍、深度測試、模板緩沖區(qū)*/
? ? glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA|GLUT_DEPTH|GLUT_STENCIL);
? ? //GLUT窗口大小戚啥,標(biāo)題窗口
? ? glutInitWindowSize(800,600);
? ? glutCreateWindow("Triangle");
? ? //注冊回調(diào)函數(shù)
? ? glutReshapeFunc(ChangeSize);
? ? glutDisplayFunc(RenderScene);
? ? //驅(qū)動程序的初始化中沒有出現(xiàn)任何問題奋单。
? ? GLenumerr =glewInit();
? ? if(GLEW_OK!= err) {
? ? ? ? fprintf(stderr,"glew error:%s\n",glewGetErrorString(err));
? ? ? ? return1;
? ? }
? ? //調(diào)用SetupRC
? ? SetupRC();
? ? glutMainLoop();
? ? return0;
}
、猫十、览濒、
運行成功并出現(xiàn)以下頁面就表示搭建成功