OpenGL 环境搭建 - MacOS

454 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情


  1. Swift Optional
  2. Swift Enum
  3. iOS开发 做一个三角形
  4. Swfit 指针类型
  5. Swift 属性(下)
  6. Swift 属性
  7. Swift 小结
  8. Swift 类与结构体(下)
  9. Swift 类的生命周期
  10. Swift 类的初始化器
  11. Swift 类与结构体
  12. OpenGL 压缩纹理
  13. OpenGL 隧道坐标计算
  14. 0penGL 像素格式及数据类型
  15. OpenGL 纹理对象
  16. OpenGL 纹理
  17. OpenGL 模型变化
  18. OpenGL 视图
  19. OpenGL 矩阵
  20. OpenGL 向量
  21. OpenGL 颜色混合
  22. OpenGL 深度测试的潜在风险
  23. OpenGL 浅析深度测试
  24. OpenGL 浅析隐藏面消除
  25. OpenGL 图元连接方式
  26. 记WKWebView与HTML完成交互两三事
  27. OpenGL 渲染流程图解析
  28. OpenGL 控制你的正方形
  29. OpenGL 专业名词解释
  30. OpenGL 环境搭建 - MacOS

  • OpenGL的环境搭建整体上还是比较简单的。大致按照一下几步就可以搭建一个开发环境。

第一、Xcode新建一个项目

( 选择 macOS - Cocoa App

第二、添加项目依赖

Bulid Phases——Link Binary With Libraries 添加依赖库  GLUT.framework  和  OpenGL.framework

第三、 添加库文件

将下载好的 include 文件夹直接拖入项目工程中;将 libGLTools.a 静态库直接拖入到项目的 Frameworks 中。(文件下载地址,网上有一大堆,也可以联系我获取。)

第四、 配置路径

Build Settings 中,配置 Header Search Paths ,添加上 include 的路径。

第五、 新建main.cpp文件

新建一个 C++ 类型文件,命名为 main ,创建的时候 去掉勾选 同时创建头文件的对勾。

第六、 移除无用文件

删除AppDelegate.hAppDelegate.mmain.m 、ViewController.h 和 ViewController.m

第七、 测试代码

将下面的测试代码,放到新建的 main.cpp 文件 运行看看效果 (绘制一个四边形)

#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.3f,0.5f,0.8f,1.0f);
    
    //初始化着色管理器
    
    shaderManager.InitializeStockShaders();
    
    //设置四角形,其中数组vVert包含所有3个顶点的x,y,笛卡尔坐标对。
    
    GLfloat vVerts2[] = {
        
        -0.5f,-0.5f,0.0f,
        
        -0.5f,0.5f,0.0f,
        
        0.5f,0.5f,0.0f,
        
        0.5f,-0.5f,0.0f,
    };
    
    //批次处理
    
    triangleBatch.Begin(GL_QUADS,4);
    
    triangleBatch.CopyVertexData3f(vVerts2);
    
    triangleBatch.End();
    
    
}

//开始渲染
void RenderScene(void)
{
    
    //清除一个或一组特定的缓冲区
    
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT);
    
    //设置一组浮点数来表示颜色
    
    GLfloat vRed[] = {0.0f,0.8f,0.6f,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(600,600);
    
    glutCreateWindow("OpenGL");
    
    //注册回调函数
    
    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;
    
}

运行效果如图所示:

image.png

到这里,我们就搭建好了 OpenGL的开发环境。