MAC OpenGL 环境搭建

Stella981
• 阅读 921

MAC OpenGL 环境搭建

基础库介绍

先要安装两个库一个是GLEW(OpenGL Extension Wrangler Library),另外一个是GLFW(Graphics Library Framework)

GLEW

譯自英文-OpenGL擴展Wrangler庫是一個跨平台的C / C ++庫,可幫助查詢和加載OpenGL擴展。 GLEW提供了高效的運行時機制,用於確定目標平台上支持哪些OpenGL擴展。所有OpenGL擴展都在一個頭文件中公開,該文件是從官方擴展名列表機器生成的

GLFW

GLFW 是配合 OpenGL 使用的轻量级工具程序库,缩写自 Graphics Library Framework(图形库框架)。GLFW 的主要功能是创建并管理窗口和 OpenGL 上下文,同时还提供了处理手柄、键盘、鼠标输入的功能。

进入安装步骤

准备工作

要进行安装的话需要先安装CMake,可以选择使用GUI 方式 或者命令行的方式。GUI可以在这里下载,命令行的方式的话,可以用brew来安装,方式如下

brew install cmake

安装GLEW

首先在这里下载源码,下载以后,解压文件,然后进入到文件所在路径,打开终端进入到此路径,执行命令

sudo make install

安装GLFW

首先在这里下载源码,我们可以选择直接下载编译好的库,也可以下载源文件然后通过camke来自己编译,区别是如果用cmake库的话,在执行成功以后,会直接将生成的库与头文件分别添加到系统路径,也就是/usr/local/include和/usr/local/lib。这里就自己选择方式了。我在这里介绍利用make工具,自己编译的方式

打开cmake 的gui工具,在source code选择下载的glfw路径,这一步需要在这个路径创建一个build目录,用于存放生成的文件。然后在browse build路径选择我们刚才创建的路径,点击configure。 MAC OpenGL 环境搭建

生成成功会出现如下效果

MAC OpenGL 环境搭建

接下来从终端进入到build目录,没错就是刚才我们创建的build,输入如下指令

sudo make
sudo make install

执行成功后,剩成的.a文件与头文件就都放到/usr/local/include和/usr/local/lib了。

环境安装好以后,应该是这个样子的

MAC OpenGL 环境搭建

至此,环境安装完毕,接下来就是加入到工程了

加入工程

配置搜索路径

首先我们创建一个command line的工程,然后在build setting里这只user search path,在user search path中设置为:/usr/local/include,这里一定要注意不能选择递归查找,否则会出错。然后设置library search path为:/usr/local/lib。设置这个的作用是工程中明确工程中查找头文件和.a文件的路径。

添加要链接的framework

添加以下库文件:

  • Cocoa.framework
  • OpenGL.framwork
  • GLUT.framework
  • CoreVideo.framework
  • IOKit.framework
  • libglfw3.a
  • libGLEW.a

MAC OpenGL 环境搭建

其中,libglfw3.a、libGLEW.a需要点击 add another,然后进入要路径/usr/local/lib中添加。

配置完成以后,就可以写代码了,进入main.cpp文件,将main中修改如下

#include <iostream>
#include <GL/glew.h>
#include <GLFW/glfw3.h>
void Render(void)
{
    glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
    glClear(GL_COLOR_BUFFER_BIT);
    glBegin(GL_TRIANGLES);
    {
        glColor3f(1.0,0.0,0.0);
        glVertex2f(0, .5);
        glColor3f(0.0,1.0,0.0);
        glVertex2f(-.5,-.5);
        glColor3f(0.0, 0.0, 1.0);
        glVertex2f(.5, -.5);
    }
    glEnd();
}
int main(void) {
    GLFWwindow* win;
    if(!glfwInit()){
        return -1;
    }
    win = glfwCreateWindow(640, 480, "OpenGL Base Project", NULL, NULL);
    if(!win)
    {
        glfwTerminate();
        exit(EXIT_FAILURE);
    }
    if(!glewInit())
    {
        return -1;
    }
    glfwMakeContextCurrent(win);
    while(!glfwWindowShouldClose(win)){
        Render();
        glfwSwapBuffers(win);
        glfwPollEvents();
    }
    glfwTerminate();
    exit(EXIT_SUCCESS);
    return 0;
}

见证奇迹的时刻到了,运行,你将会看到一个漂亮的三角形MAC OpenGL 环境搭建

mac 工程搭建,就说这么多了。


感谢以下文章的作者:

Mac系统下配置OpenGL环境(小白自学版)

OpenGL学习笔记(二)—— (macOS)环境搭建

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这