1.准备资源
1.GLTools
2.glew
3.libGLTools.a
2.新建工程
1.Xcode ->mac OS ->App

2.解压资源,导入工程
1.pod本地导入 资源 提取码: b3wp
a.pod init -> podfile文件
b.配置podfile
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
target 'OpenGL' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
# Pods for OpenGL
pod 'GLTools', :path => 'libs/GLTools'
pod 'GL', :path => 'libs/GL'
end
c.pod install
2.pod手动导入 资源 提取码: 8x5m
a.将资源文件直接拖入工程中

b.增加依赖库:增加GLUT.framework和OpenGL.framework即可,libGLTools会在拖入时添加

c.修改Header Search Paths:Bulid Setting ->Search Paths -> Header Search Paths

注意修改的是include的路径:比如我的是这样


3.去除无用文件
AppDelegate.h AppDelegate.m
ViewController.h ViewController.m
Main.storyboard main.m 共6个

4.新增c++入口文件
1.macOS -> C++ File

2.取消勾选

5.添加测试代码
#include "GLShaderManager.h"
#include "GLTools.h"
#include <glut/glut.h>
GLBatch triangleBatch;
GLShaderManager shaderManager;
//窗口大小改变时接受新的宽度和高度,其中0,0代表窗口中视口的左下角坐标,w,h代表像素
void ChangeSize(int w,int h)
{
glViewport(0,0, w, h);
}
//为程序作一次性的设置
void SetupRC()
{
//设置背影颜色
glClearColor(0.0f,1.0f,1.0f,1.0f);
//初始化着色管理器
shaderManager.InitializeStockShaders();
//设置三角形,其中数组vVert包含所有3个顶点的x,y,笛卡尔坐标对。
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)
{
//清除一个或一组特定的缓冲区
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT);
//设置一组浮点数来表示红色
GLfloat vRed[] = {1.0f,0.0f,0.0f,1.0f};
//传递到存储着色器,即GLT_SHADER_IDENTITY着色器,这个着色器只是使用指定颜色以默认笛卡尔坐标第在屏幕上渲染几何图形
shaderManager.UseStockShader(GLT_SHADER_IDENTITY,vRed);
//提交着色器
triangleBatch.Draw();
//将在后台缓冲区进行渲染,然后在结束时交换到前台
glutSwapBuffers();
}
int main(int argc,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);
//驱动程序的初始化中没有出现任何问题。
GLenum err = glewInit();
if(GLEW_OK != err) {
fprintf(stderr,"glew error:%s\n",glewGetErrorString(err));
return 1;
}
//调用SetupRC
SetupRC();
glutMainLoop();
return 0;
}
6.代码效果

优化:因为API 在masOS 10.9以后弃用所以会有Deprecate警告,可以选择屏蔽,不影响使用

源码上传gitHub,地址:源码,
master分支--直接手动导入的
dev_podLocal分支--只用pod本地导入的
网友评论