计算机视觉【01-搭建OpenGL开发环境】


一、搭建环境

1.1 环境准备:

  • 开发环境:Mac OS、Xcode 11+
  • OpenGL 工具包(会在本文末尾提供)
    • include 文件夹
    • libGLTools.a 静态文件

1.2创建项目

注意,我们使用Mac 应用来熟悉OpenGL

1.3 添加库

这里需要添加的是GLUT和OpenGL,这些都是苹果内置的。
步骤:在Build Phrases - Link Binary With Libraries 里,点击加号后,搜索GLUT 和OpenGL添加,如下图:


1.4 引入第三方库

  1. 将文件包内的include 文件夹里拖入拷贝至工程内
  2. 把静态库 libGTools.a 拖入Framework 文件夹下
  3. 结果的文件夹结构如下:

    1.5 单独引用 GLTools.h 和glew.h:

具体操作:在Build Phrases —— Complie Sources 添加GLTools.h 和glew.h文件。

结果如下:

1.6 删掉多余代码:

需要删除的有:
* AppDelegate.h
* AppDelegate.m
* ViewController.h
* ViewController.m
* Main.stroyboard
* main.m

目录如图所示:

1.7 添加启动文件 main.cpp

  1. 创建c++ 文件:

  2. 添加 main 文件,注意关掉创建头文件的对勾

  3. 创建基础代码,如下:

     int main(int argc, char * argv[])
     {
         return 0;
     }

    至此,本Demo 已经可以独立运行了

二、扩展:绘制三角形

2.1 业务代码

上面的环境搭建好了,何不来个小小的Demo 来验证一下,输入业务代码如下:

#include "GLTools.h"

#include <GLUT/GLUT.h>

GLBatch triangleBatch;

GLShaderManager shaderManager;

void ChangeSize(int w, int h)
{
    glViewport(0, 0, w, h);
}

void SetupRC()
{
    glClearColor(0.0f, 0.0f, 1.0f, 1.0f);

    shaderManager.InitializeStockShaders();

    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
    };

    shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vRed);

    triangleBatch.Draw();

    glutSwapBuffers();
}

int main(int argc, char * argv[])
{
    gltSetWorkingDirectory(argv[0]);

    glutInit(&argc, argv);

    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL);

    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();

    glutMainLoop();

    return 0;
}

2.2 小bug 解决

运行后发现会出现如下bug,

这里提示的是饮用方式的不对,修改根据提示修改,结果如下:

其他的错误提示也算大同小异,也一样的根据系统提示做修改。

2.3 结果展示

最终结果如下:

在这里画了一个简单的三角形,并用红色进行和内部渲染。

三、小结

本文介绍了OpenGL环境搭建,并简单的通过业务代码创建了一个红色三角形,由于是初次接触,内部的语法不妨略过,享受一下结果,会在以后的章节进行步骤的详细讲解。


文章作者: 李佳
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 李佳 !
评论
 上一篇
计算机视觉【02-OpenGL创建正方形】 计算机视觉【02-OpenGL创建正方形】
一、目标结果 二、分析过程分析流程简图如下 三、全部代码如下:下面从main.cpp 的流水线讲解整个实现过程 3.1 准备工作3.1.1 设置当前工作目录gltSetWorkingDirectory(argv[0]); 其中argv 源
2020-07-15 李佳
下一篇 
离屏渲染-超详细解析 离屏渲染-超详细解析
〇、序章作为一个面试中经常出现的话题,离屏渲染(Offscreen rendering)恐怕是极高频率提起的——最熟悉的陌生人,我们多少知道一点,也了解到由于它的出现,会带来的屏幕刷新卡顿,滑动式不跟手等体验,但是又不是知道的那么透彻。在这
2020-07-07 李佳
  目录