配置环境
创建项目
打开Xcode -> File -> New -> Project,在弹框中选择macOS->App。
导入依赖库
下载libGLTools,找到GL和include文件夹以及libGLTools.a文件,将这三个文件导入到项目中,并在Build Settings -> Library Search Paths添加路径;点击TARGETS -> General -> Frameworks,Libraries,and Embedded Content,导入系统库OpenGL.framework和GLUT.framework。
修改头文件
下载的头文件中多处内部文件的引用都用的是尖括号,需要手动改成双引号,要不然导入这些头文件时编译报错,类似于’math3d.h’ file not found with include; use “quotes” instead错误。
创建main函数
删除AppDelegate、ViewController、main等几个自动生成的类文件,新创建一个C++文件main.cpp,注意不需要main.hpp文件。
绘制正方形
手动计算顶点
定义变量
#include <stdio.h>
/**
GLShaderManager:着色器管理器类。没有着色器,我们就不能在OpenGL(核心框架)进行着色。着色器管理器不仅允许我们创建并管理着色器,还提供一组“存储着色器”,他们能够进行一些基本的渲染操作。
*/
#include "GLShaderManager.h"
//GLTools:包含了大部分GLTool中类似C语言的独立函数
#include "GLTools.h"
#include <GLUT/GLUT.h>
//着色管理器
GLShaderManager shaderManager;
//简单的批次容器,是GLTools的一个简单的容器类。
GLBatch triangleBatch;
//正方形边长
GLfloat blockSize = 0.1f;
//指定顶点。在OpenGL中,三角形是一种基本的3D图元绘图原素。
GLfloat vVerts[] = {
-blockSize, -blockSize, 0.f,
blockSize, -blockSize, 0.f,
blockSize, blockSize, 0.f,
-blockSize, blockSize, 0.f
};
int main(int argc, char* argv[]) {
return 0;
}
导入头文件GLShaderManager.h、GLTools.h、GLUT/GLUT.h,定义着色器管理类shaderManager和简单批次类triangleBatch,创建main函数作为程序入口。
GLShaderManager: 着色器管理类。在下面会用到着色器渲染颜色,所以需要用到着色器管理类来初始化固定管线。
GLBatch: 简单的批次类,帮助类。这个类可以作为7种图元的简单批次容器使用。而且它知道在使用GLShaderManager支持的任意存储着色器时如何对图元进行渲染。利用它可以传输顶点/光照/纹理/颜色数据到存储着色器中。
blockSize: 表示正方形边长的一半,顶点数据范围是0~1,这里定义正方形的边长为0.2f。
vVerts: 定义一个包含10个元素的一位数组来表示正方形顶点数据,其中没三个点(x、y、z)表示一个点,一共4个点,依次表示左下(A)、右下(B)、右上(C)、左上(D)4个顶点。如下图
实现main函数
int main(int argc, char* argv[]) {
//初始化GLUT库
glutInit(&argc, argv);
//GLUT窗口位置
glutInitWindowPosition(100,100);
//GLUT窗口大小
glutInitWindowSize(800, 600);
//创建窗口
glutCreateWindow(&