2018年的OpenGL学习

您想学习计算机图形学吗? 或者,也许您只是对OpenGL感兴趣? 无论如何,这篇文章可能会让您感兴趣:在这里讲述有关OpenGL学习的故事。

现在,如果您对OpenGL一无所知,则可以考虑查看我的较早的博客文章,该文章通常会向您介绍OpenGL。

您确定要学习OpenGL吗?

OpenGL很老,它的历史可以追溯到90年代,而当时几乎一切都不同 :我们没有Web,Linux没有真正的普及,没有Git这样的东西! 都! 我这里根本不会提到计算机图形学:最强大的GPU最多具有32 MB的VRAM。

所以,是的。 OpenGL是一种恐龙:它有很多东西,在计算机系统发展的当前阶段是不需要的。 那时可能还不错,但是现在,有很多更丰富,更强大的API,例如Direct3D,Vulkan和Metal。

您可能会说,OpenGL是跨平台的,所以……是的! 实际上,它是跨平台的。 但是,今天有一种叫做“ Vulkan”的东西,以我个人的观点,这是学习的更好选择。

现在,我不想说最好是开始基于Vulkan开发某种类型的项目:尚未准备好。 我认为,在1年内,Vulkan确实会做好准备,因此,对我来说,今天对Vulkan学习过程的贡献将会在将来得到回报。

如果您仍然不确定,可以查看比较:

  • OpenGL和Direct3D的比较
  • Vulkan OpenGL GameDev StackExchange比较
  • GitHub Vulkan OpenGL比较存储库

我想说的一件事是:OpenGL比其他API更简单。 这个事实的结果是显而易见的:最好开始使用OpenGL学习图形编程。

您想学习吗? 不要碰死人

OpenGL中有一个阶段,现在称为“固定功能管道”。 甚至不要考虑学习如何使用该传统方法进行编程:它速度慢,愚蠢且不推荐使用。

从“现代” OpenGL版本开始更好:学习OpenGL> 3.0。

我可以使用X编程语言学习OpenGL吗?

应该是。

所有向用户提供原始OpenGL接口的API本质上都非常相似,因此可以互换使用。 因此,如果您最喜欢的编程语言具有某种流行的OpenGL接口,则可以使用它来学习OpenGL。

这些工具包旨在创建和管理OpenGL窗口,以及管理输入,但除此之外:

  • 轻型货车
  • 游离谷
  • UT

如果要在库中具有大量内置功能,可以尝试使用所谓的“多媒体”库:

  • SDL是非常受欢迎的一种。 SDL已经存在了很长时间(第一版于1998年初发布)。 该库具有许多可用于许多不同编程语言的绑定。 Bindigns可以在这里找到。
  • SFML
  • Allegro看起来也是一个不错的选择,尽管我自己还没有使用过。 所以,看看。

另外,如果您是Web开发人员,则可以尝试WebGL。 人们说这很棒。

图书

在本节中,我将分享一些我知道的书,这些书对OpenGL开发人员非常有用。

实际书籍清单(从复杂程度从低到高排序)

  • OpenGL编程指南:带有SPIR-V的OpenGL学习官方指南,版本4.5(第9版)(红皮书):有关OpenGL API基础的书。
  • OpenGL Superbible:综合教程和参考(第7版):该书几乎​​讨论了OpenGL中的所有内容,该书也有一个公共GitHub存储库,其中包含代码示例和其他相关材料。
  • 实时渲染,第三版:出色的书,以简单明了的方式介绍了一般的图形编程概念。
  • OpenGL Shading Language(第3版)(橙皮书):讲述OpenGL Shading Language(GLSL)的书。
  • OpenGL见解:面向高级OpenGL程序员的书,其中包含许多有用的技术和使用OpenGL API进行图形编程的绝妙方法。

在线资源

互联网上有很多方便的与OpenGL相关的东西。 并且,显然,您需要其中一些才能获得良好的学习体验。

维基百科文章

  • 关于实际OpenGL的文章
  • 基于OpenGL的程序列表
  • 武尔坎

学习资源

  • SIGGRAPH大学:“ OpenGL编程简介”。 我发现这段介绍性视频很棒。 它介绍了现代(截至2013年)OpenGL的基础。 涵盖了历史,基本概念,基本着色器语法等。 此处使用GLUT。
  • OpenGL编程Wikibook。
  • OpenGL视频教程系列
  • 基本OpenGL教程和说明
  • OpenGLBook,这是一个OpenGL教程网站,目前尚不流行,但是这里有很多很棒的资料! 该网站拥有自己的GitHub存储库,因此,请检查一下!
  • “ learnopengl.com”网站
  • “ open.gl”网站
  • “ opengl-tutorial.org”网站
  • 官方Khronos教程

参考

  • 官方Khronos OpenGL Wiki
  • 好的交互式OpenGL文档网站
  • MSDN OpenGL文档

其他

  • OpenGL官方网站
  • NVIDIA上的NVidia
  • Khronos OpenGL概述
  • Android OpenGL
  • 适用于MacOS的OpenGL
  • Haskell OpenGL软件包
  • Reddit OpenGL线程
  • NeHe网站OpenGL
  • OpenGL Twitter
  • Vulkan Twitter
  • Khronos集团Twitter
  • QT OpenGL集成
  • StackOverflow“ OpenGL”标签
  • GLEW网站
  • GLFW官方网站
  • “ OpenGL SuperBible”书的网站
  • [https://www.lwjgl.org/](Java OpenGL库:LWJGL)
  • glprogramming.com