0
点赞
收藏
分享

微信扫一扫

OpenGL 爆破计划(〇)常识 & 挖坑说明

哈哈镜6567 2022-01-23 阅读 96

文章目录


Chapter 0 - 常识 & 挖坑说明

这篇文章是给谁写的

这篇文章是给我自己写的(哈哈哈哈哈哈),一开始是用作个人探索 OpenGL 的 API 时的笔记,然后我发现了 这个,惊为神作,所以本文变成了学习该系列资料的笔记;后来我又发现我需要自己组织更多的代码,以抽象出更有效的组件模型、事件模型等等……写着写着我发现 本文基本上讲解了如何从底层 OpenGL API 开始写一个游戏引擎中核心的部分

很快我发现,由于自己是 C++ 出身,很多现代的语言概念都一带而过了(有讲,但很短),这导致C++ 基础不够好的人几乎没办法阅读本文(的代码)……所以我的跳坑宣言是这样的:这篇文章是本菜鸡一时脑热学习大量游戏引擎有关底层技术的“爆破计划”的一部分,大致遵循了 Joey de Vries 的教程纲要,并在其基础上添加了许多延伸话题,可以视作《Learn OpenGL: Extended and Implemented in Modern C++》,如果你认为自己对 C++14 有一定理解,且愿意观赏一个菜鸡如何从头 DIY 一个简单的实时渲染引擎出来,那么欢迎你读它。lol

本项目的源码在 GitHub 仓库 里全都有(不要脸求 Star!);本文不定期更新,但就像我的 C# 爆破计划 一样,可能会更新很长很长,长到你都不愿意继续读,我也不愿意继续写(哈哈哈哈哈哈)。


好了扯蛋完毕,下面是本章的正文:

OpenGL 是什么

  • OpenGL 是一个利用计算机硬件实现图形绘制的 API 标准,不是一个软件包
  • OpenGL 标准规范了每个 API 的签名、行为、输出,而不规定其实现
  • OpenGL 库的开发者一般是显卡厂商,实现了所有 OpenGL 标准中要求的 API

OpenGL 的两种工作模式

  • 立即渲染模式 是早期 OpenGL 的工作模式,也就是今天的 固定渲染管线,优点是新手友好,用来进行简单的作图任务很便利;缺点是用户无法控制 GPU 如何计算,不灵活,无法实现复杂的效果
  • 核心模式 是现代 OpenGL 的工作模式,也就是 可编程渲染管线 和高级图形 API 的结合,优点是极为灵活,理论上可以实现任何视觉效果,开发效率高;缺点是学习曲线陡峭
  • 从 OpenGL 规范 3.2 开始,规范建议开发者弃用立即渲染模式,并逐渐淘汰老旧的 API;我们学习的是比较有代表性的 OpenGL 3.3 规范

OpenGL 的逻辑体系

  • OpenGL(准确的说是其每一个实现版本在 API 层面的行为)是一个超大规模的 状态机,它是一系列运行时变量,任意时刻的状态描述了 OpenGL 的状态(准确的说是在 OpenGL 抽象下的硬件的运行状态)

  • OpenGL 的状态被称为 OpenGL 的 上下文(context)

  • OpenGL API 采用了直白的“set-run”语法风格,在 OpenGL 中,做一件事分两步:

    1. 调用一系列 setter 去设置 OpenGL 的状态,比如设置要使用的材质、要使用的贴图等;
    2. 设置好所有当前帧需要的 OpenGL 上下文后,调用 draw call 来完成渲染
举报

相关推荐

0 条评论