当前位置: 首页 > news >正文

LearnOpenGL 源码在 MAC 上的编译与调试

学习 OpenGL ,相信肯定有不少人看过这个网站:

https://learnopengl.com/

https://learnopengl.com/

这是它的英文原版网站,后来又有了不同语言的翻译版本,对应中文就是:

https://learnopengl-cn.github.io/

这两个网站对于学习 OpenGL 帮助非常大,既可以用作入门的教材,也可以作为工具书,后续进行查漏补缺。

并且它的内容很全面,除了 OpenGL 基础知识、坐标系统、纹理、Shader、模型加载等,还有高级光照、PBR 等渲染技巧,这些在渲染引擎的开发中都是会用到的,后面会继续和大家分享。


本文主要是讲解如何运行 LearnOpenGL 文章中的示例代码,在 XCode 上进行编译和调试,效果如下:

在网站上某一章节的内容,就对应于 XCode 工程某一小项的具体代码,我们可以选择要运行的章节代码,在 Mac 看到最终效果。

另外,我们还可以在 XCode 上修改相关代码,调整某些参数,验证自己的想法和实验结果。

这一点很重要,对于初学者来说就是要不断地试错,在失败中成长。

在开始 LearnOpenGL 网站的代码讲解之前,先介绍一下他的主人。

不得不说,这是位大佬,有兴趣的同学都可以去 Follow 一下。

他的个人主页是:

https://joeydevries.com

从主页上可以看到大佬在图形学和游戏开发上造诣颇深,做了不少有意思的东西。

  • 实现了一个简单的渲染引擎,采用 C++ 开发,支持了不少特性,在 LearnOpenGL 网站上都可以看到。

https://github.com/JoeyDeVries/Cell

这可以当做是学习 OpenGL 之后巩固提高的一个大作业了。

  • 另外,还做了一个 Vulkan 的教学网站,虽说目前还没有完成,但仍然值得期待。

https://learnvulkan.com/

  • 当然了,你也可以看我的网站,或许对你有一些帮助

https://glumes.com/


言归正传,讲回代码的编译部分。

LearnOpenGL 网站的示例代码地址如下,clone 这个项目到你的电脑上。

https://github.com/JoeyDeVries/LearnOpenGL

在这个项目的 README.md 上已经有讲如何在 MAC 平台进行编译了。

brew install cmake assimp glm glfw
mkdir build
cd build
cmake ../.
make -j8

但是这个编译结果并不是我们想要的,因为它编译出来的都是二进制可执行文件。

虽说我们可以通过 ./xxx 的方式来运行这些可执行文件,但总不能每改一点代码就全都编译一次吧。

理想的方式就要通过 IDE(集成开发环境) 来编译运行,并且在 IDE 上修改代码,看到结果。

XCode 在这里就充当了 IDE 的角色。

下面给出新的编译代码:

brew install cmake assimp glm glfw
mkdir build
cd build
cmake -G "Xcode" ..

有变化的就是最后一行了,此行代码会在 build 目录下生成 XCode 工程。

双击 LearnOpenGL.xcodeproj 就可以打开整个工程啦。

接下来就是自由发挥时间,你可以在源代码基础上进行任何修改,对照着 LearnOpenGL 网站上的讲解,一步一步地去调试验证,积累经验,在成为大佬的路上越走越远~~~~

祝玩得愉快 ????????????


技术交流,欢迎加我微信:ezglumes 。

扫码关注公众号【纸上浅谈】,一起学习多媒体音视频开发~~~

喜欢就点个「在看」吧 ▽

相关文章:

  • 在 iOS 中使用 OpenGL ES 实现绘画板
  • 技术开发故事会连载
  • OpenGL ES 学习资源分享
  • 【音视频连载-001】基础学习篇- SDL 介绍以及工程配置
  • GLSL加载纹理颠倒的六种解决方案
  • 内存都没了,还能运行程序?
  • 比 SharedPreferences 更高效?微信 MMKV 源码解析
  • 【音视频连载-002】基础学习篇-SDL 创建窗口并显示颜色
  • 【音视频连载-003】基础学习篇-SDL 消息循环和事件响应
  • Android JNI 之 Bitmap 操作
  • 游戏中的角色是如何“动”起来的?
  • Android JNI 中的线程操作
  • 【音视频连载-004】基础学习篇-SDL 加载图片并显示
  • OpenGL 利用 Alpha 透明度进行测试
  • 【音视频连载-005】基础学习篇-SDL 加载 YUV 文件并显示
  • CSS 三角实现
  • Facebook AccountKit 接入的坑点
  • Git同步原始仓库到Fork仓库中
  • javascript面向对象之创建对象
  • Java新版本的开发已正式进入轨道,版本号18.3
  • java中具有继承关系的类及其对象初始化顺序
  • spring + angular 实现导出excel
  • SQLServer插入数据
  • Vue 重置组件到初始状态
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • Webpack 4 学习01(基础配置)
  • Xmanager 远程桌面 CentOS 7
  • 闭包--闭包之tab栏切换(四)
  • 不上全站https的网站你们就等着被恶心死吧
  • 对象引论
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 如何学习JavaEE,项目又该如何做?
  • 使用Swoole加速Laravel(正式环境中)
  • 译自由幺半群
  • 自定义函数
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • # Java NIO(一)FileChannel
  • #define 用法
  • (12)Linux 常见的三种进程状态
  • (20050108)又读《平凡的世界》
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (附源码)计算机毕业设计高校学生选课系统
  • (三)uboot源码分析
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (五)c52学习之旅-静态数码管
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)Linux整合apache和tomcat构建Web服务器
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .net MySql
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况