搭建Mac环境
©shuan9999
1. 创建Xcode工程,如图:
2. 添加OpenGL.framework和GLUT.framework,如图:
3. 添加libGLTools.a,并配置好头文件
- 将libGLTools.a拖到Frameworks中
- 删除文件:AppDelegate.h、AppDelegate.m、main.m、ViewController.h 、ViewController.m
- 创建:main.cpp
如图:
4. 配置Header Search path
这里如果没有配置好,工程中无法直接引到头文件
Xcode中有Header Search path和User Header Search path两个配置头文件的地方,这里我两个都配了
如图:
需要库和头文件,联系作者
示例程序
//
// main.cpp
// LearnOpenGL
//
// Created by Shuan on 2019/9/13.
// Copyright © 2019 shuan9999. All rights reserved.
//
#include "GLTools.h"
#include <glut/glut.h>
#include <stdio.h>
GLBatch triangleBatch;
GLShaderManager shaderManager;
/// 窗口大小改变的回调
/// @param w 窗口宽度,单位像素
/// @param h 窗口高度
void onWindowSizeChange(int w, int h) {
//0,0代表视口左下角坐标
glViewport(0, 0, w, h);
}
void init() {
//设置背景颜色
glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
//初始化着色管理器
shaderManager.InitializeStockShaders();
//设置三角形顶点坐标,数组中包含3个顶点的x,y,z笛卡尔坐标
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 render(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[]) {
//设置工作目录,仅针对macOS X
gltSetWorkingDirectory(argv[0]);
//初始化GLUT库
glutInit(&argc, argv);
//初始化双缓冲窗口,GLUT_DOUBLE:ss双缓冲窗口,GLUT_RGBA:RGBA颜色模式,GLUT_DEPTH:深度测试,GLUT_STENCIL:模板缓冲区
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA|GLUT_DEPTH|GLUT_STENCIL);
//设置窗口大小
glutInitWindowSize(800, 600);
//设置窗口标题
glutCreateWindow("Hello Triangle");
//注册窗口变换的回调
glutReshapeFunc(onWindowSizeChange);
//c注册渲染回调
glutDisplayFunc(render);
//初始化驱动程序
GLenum err = glewInit();
if(GLEW_OK != err) {
fprintf(stderr,"glew error:%s\n", glewGetErrorString(err));
return 1;
}
//开始初始化
init();
//开启runloop
glutMainLoop();
return 0;
}
运行结果如图: