在osx中,OpenGL库在系统中已经自带了,要想查看当前系统中的OpenGL库的版本,可以在App Store中安装OpenGL Extensions Viewer

安装第三方包

依赖工具:homebrew,cmake。

这两个工具的具体安装方式网上有很多,google一下很容易找到。GLFW

GLFW是一个小型的C库,它可以让你创建和管理窗口、OpenGL和OpenGL ES上下文和Vulkan表面,枚举显示器和视频模式,以及处理键盘、鼠标、操纵杆、剪贴板和时间等输入。

GLFW主要针对那些唯一的图形输出是通过OpenGL、OpenGL ES或Vulkan的应用程序,提供了一个简单的、多平台的抽象层。因此GLFW在开发多平台OpenGL应用时非常有用,但单平台开发者也可以从避免处理笨拙的平台特定API中获益。

像GLFW这样的库非常有用,因为OpenGL和OpenGL ES本身并没有提供任何机制来创建必要的上下文、管理窗口、用户输入、定时等。正如OpenGL 3.1规范(第2章,第1段)所述。OpenGL只涉及渲染到帧缓冲区(以及读取存储在该帧缓冲区中的值)。不支持有时与图形硬件相关的其他外设,如鼠标和键盘。程序员必须依靠其他机制来获取用户输入。

安装命令:

bash brew install glfw3GLEW

OpenGL Extension Wrangler Library(GLEW)是一个跨平台的开源C/C++扩展加载库。GLEW提供了高效的运行时机制,用于确定目标平台上支持哪些OpenGL扩展。OpenGL核心和扩展功能在一个头文件中暴露出来。GLEW已经在各种操作系统上进行了测试,包括Windows、Linux、Mac OS X、FreeBSD、Irix和Solaris。

安装命令:

bash brew install glew

上面是用包管理器来安装。需要依赖工具homebrew和编译工具cmake,如果没有安装这两个工具,可以google一下安装方式来安装一下。

第一个Hello World

网上很多教程到这里后,就会教你配置vs studio或者xcode,由于我本人的习惯问题,很少使用这些ide,所以这里我还是基于cmake编译工具来写第一个hello world程序。主要目的是熟悉配置include和lib目录。

新建一个文件夹,比如叫test_opengl,目录中新建一个main.cpp,添加如下代码:

#include #include #include int main(void)

{

GLFWwindow* window;

/* Initialize the library */

if (!glfwInit())

return -1;

/* Create a windowed mode window and its OpenGL context */

window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);

if (!window)

{

glfwTerminate();

return -1;

}

/* Make the window's context current */

glfwMakeContextCurrent(window);

/* Loop until the user closes the window */

while (!glfwWindowShouldClose(window))

{

/* Render here */

/* Swap front and back buffers */

glfwSwapBuffers(window);

/* Poll for and process events */

glfwPollEvents();

}

glfwTerminate();

return 0;

}

保存后,在新建一个CMakeLists.txt文件。这个文件是cmake使用的,用于指定编译时的目录、链接的库、以及编译选项等。对于本项目,添加简单的如下内容:

cmake_minimum_required(VERSION 2.8)

project(test_opengl)

set(CMAKE_VERBOSE_MAKEFILE OFF)

# glfw和glew的头文件目录,这是我的路径,你可以换成你自己的

include_directories(/usr/local/include)

aux_source_directory("./" SRCS)

set(CMAKE_CXX_FLAGS "-g -std=c++11 -Wformat")

# glew的库目录路径

link_directories(/usr/local/Cellar/glew/2.1.0/lib)

# glfw的库目录路径

link_directories(/usr/local/Cellar/glfw/3.3/lib)

add_executable(test_opengl ${SRCS} ${HDRS})

# 指定glew库

target_link_libraries(test_opengl GLEW)

# 指定glfw库

target_link_libraries(test_opengl GLFW)

编写完之后,在main.cpp同级目录下建立一个build目录,然后

cd build

cmake ..

make

然后测试是否能编译成功。如果编译成功,会出现一个test_opengl 可执行程序,然后运行:

./test_opengl

这时会看到一个hello world的窗口。

至此,你已经利用OpenGL编写了第一个程序。恭喜,你已经入门了。

mac vulkan_Mac OSX系统下使用OpenGL相关推荐

  1. Mac OSX系统下使用DosBox编写汇编

    Mac OSX系统下使用DosBox编写汇编 在这篇文章介绍了Win8.Win7下面如何设置DosBox进行汇编,今天在看下在Mac OSX下怎么搭建环境. 首先下载安装DosBox for mac版 ...

  2. Mac OS X系统下修改wifi共享的默认网段

    Mac OS X系统下修改wifi共享的默认网段 Mac OS X的wifi共享功能(internet sharing)的默认网段是192.168.2.0/24,这个网段比较常用,容易冲突.本文提供的 ...

  3. Mac和Ubuntu系统下.bash_profile和.bashrc文件

    Mac和Ubuntu系统下.bash_profile和.bashrc文件 本文部分参考Josh Staiger文章. Mac和Ubuntu系统下bash_profile和bashrc文件 前言 log ...

  4. Mac OS苹果系统下搭建arduino开发环境

    Mac OS苹果系统下搭建arduino开发环境 一.准备工作 IDE安装 驱动安装 二.开发测试 一.准备工作 IDE安装 从arduino官方网站:https://www.arduino.cc/e ...

  5. Mac技巧之苹果电脑 Mac OS X 系统下一键删除一整个英文单词、一整句话或一行的方法(转贴)...

    作者 bmwmengwei 苹果电脑 Mac OS X 系统下,按"delete"只会向前删除一个汉字或英文字母(废话).如果输入了很长的句子或单词,删除起来就郁闷了.其实,按住 ...

  6. 苹果 Mac OS X 系统下锁屏的快捷键

    苹果 Mac OS X 系统下锁屏的快捷键就是 - CTRL + SHIFT + Power

  7. 服务器双系统快捷键,Mac/Win7双系统下截屏快捷键介绍

    由于苹果电脑采用的是mac系统,使用的用户相对较少,不少购买苹果电脑的朋友经常会遇到一些截图困扰,接下来是小编为大家收集的Mac/Win7双系统下截屏快捷键介绍,希望能帮到大家. Mac/Win7双系 ...

  8. Linux、Mac、windows 系统下 配置Python虚拟环境 virtualenvwrapper教程,workon切换环境, 非常简单方便

    前言 开发及测试过程中每个环境都有各自的作用,避免破坏其他环境所以建议每个项目新建一个虚拟环境,经过对比最终我选择了virtualenvwrapper来作为我开发中虚拟环境管理工具,接下来一起来看一下 ...

  9. java win8 mac地址_Windows8系统下MAC地址修改方法图文教程

    本文介绍了在Windows电脑平台下修改MAC地址的方法,该方法适用于Windows XP.Windows 7和Windows 8电脑.之所以要修改MAC地址,一般是在局域网中,网络管理员设置了MAC ...

最新文章

  1. pytorch下载mnist超时解决方案
  2. 苹果11怎么关掉横屏_苹果手机这些常规操作你可能不会!教你省电又省心?
  3. 基于知识图谱的问答系统(以医疗行业为例)
  4. Arria10_emif
  5. wordpress linux位置,Linux 下搭建 WordPress 个人站点
  6. Python高级网络编程系列之基础篇
  7. 《Python Cookbook 3rd》笔记(2.12):审查清理文本字符串
  8. 情人节甜蜜海报PSD分层模板,好想谈恋爱!
  9. cass参考手册_什么?你还不会测绘?南方CASS教程+视频讲解+插件汇总,快来学!...
  10. Simulink中Simscape—Fluids模块(原Simhydraulics)学习记录
  11. vmware实现小型局域网实验环境
  12. (转)2017:整合欧美中小型资产管理公司的元年及如何突出重围
  13. 互联网时代下的市场营销
  14. 基本模块 time datetime randon os sys subprocess 打印进度条
  15. 运放电路中何时加入偏置电流补偿电阻-运算放大器
  16. (精)广东工业大学 2018实时大数据分析——ShinglingMinhash实验报告
  17. 用PaddlePaddle鉴定红酒质量
  18. appkey 即 paySignkey
  19. 采用DDS设计信号发生器
  20. visio中公式太小_串联管道/并联管道中调节阀可调比R的计算

热门文章

  1. 行星齿轮设计手册_合理选用行星齿轮传动装置的侧隙
  2. win2008文件服务器fs,文件服务器 fs
  3. classes是什么意思怎么读_KY啥意思?托马仕空品教你怎么读空气
  4. java自定义返回码_java – 自定义HTTP状态代码
  5. linux更新模块,Linux下Nginx的安装、升级及动态添加模块
  6. mysql打开的文件描述符限制_linux fopen个数限制的问题(文件描述符限制)
  7. android 原生分享界面_索尼PlayStation App获得语音聊天功能和新的UI界面
  8. android富文本图片自适应,Android 图片混排富文本编辑器控件
  9. linux more 下一页_Linux学习笔记
  10. Linux tar.gz、tar、bz2、zip的区别,如何选择呢