40

我知道有一些关于学习 OpenGL 的问题。这是我所知道的:

  • 3D数学
  • 3D理论

这是我想知道的: - OpenGL 4.0核心配置文件(或更高版本) - 着色器语言 400(或后者) - 上面的每个部分(如果它不适用于供应商,那么它仍然不会打扰我)

这是我不想知道的 - 固定功能管道(永远不会使用它!) - 较旧的 OpenGL - 兼容性配置文件

我更喜欢更多的信息,比如教程、系列文章、书籍。

PS 如果您知道有关 opengl 3.x 核心配置文件的资源,请也发布它们

4

11 回答 11

31

我真诚地不喜欢否定的答案,但恐怕我必须对这个问题给出一个答案。

您最终要求的是使用OpenGL 4.0 及更高版本独有功能的初学者材料。好吧,让我们看看 4.x 的一些独特功能。

也许最大的特点是镶嵌。这意味着什么?这意味着对基元进行细分以生成更多基元。在人们开始理解这意味着什么之前,必须首先了解基元是如何渲染的。它使用 4.x 之前的级别功能。

但是即使对渲染的工作原理有了深刻的理解,仍然存在一个问题。为了对曲面细分着色器进行有意义的讨论,首先必须对曲面细分算法有深入的了解。这不是一个简单的主题。对于教用户使用曲面细分着色器的教程,该教程首先必须介绍样条曲线和面片或细分曲面。这两个都是冗长的主题,有大量的白皮书专门讨论它们。只有在详细介绍了算法之后,用户才能准备好查看这些算法是如何在曲面细分着色器中实现的。

或者,换句话说,曲面细分着色器不是初学者材料。我什至不认为它们是中级材料。

4.x 级硬件的另一个重要特性是着色器图像加载存储(及其伴侣,原子计数器),4.2 中的核心。它允许一些非常漂亮的事情,包括与订单无关的透明度。然而,为了让用户甚至开始了解它周围的所有怪癖,用户需要非常熟悉现代着色器硬件的深层工作原理。因此,任何教程都必须首先解释现代基于 VLIW/SIMD 的硬件如何工作,以及着色器如何与此类硬件一起使用。同样,这不是微不足道的材料。

4.x 硬件的另一大特点是间接渲染。也就是说,将参数放入缓冲区对象本身的 glDraw 调用中。问题在于,使用此功能实际上只有一个原因:因为 GPU 将数据直接生成到一个或多个缓冲区中以供以后渲染。这样做通常涉及某种形式的 GPGPU 操作,这在很大程度上不是初学者级别的话题。

所有这些功能都很有用并且有真正的目的。但是初学者都不应该使用它们;在某些情况下,即使是中级程序员也不应该碰它们。

现在完全公平地说,有一些 4.2 功能既不是基于硬件的(因此它们通常在 3.3 和更低版本上实现)并且非常有用。例如,单独的程序对象。这些功能在我编写基于 3.3 的教程时遇到了,我考虑过回顾它们并合并此功能。我没有这样做的唯一原因是因为实现(驱动程序)在此功能方面仍然不完全稳定。但这样做会很有用。

我要表达的主要观点是:如果您在图形知识方面处于准备好利用 GL 4.x 硬件的独特功能的阶段,那么您也有足够的图形体验,而您却没有。不需要明确的分步说明材料来实现图形硬件的功能。你会是那种可以阅读 GL_ARB_tessellation_shader 扩展规范并了解如何让他们做你需要做的事情的人。

话虽如此,如果您对教授 OpenGL 核心 3.0 或更高版本的材料感兴趣,OpenGL Wiki有一个很好的此类链接集合。为了充分披露,我确实写了其中之一。

于 2011-06-13T05:32:38.377 回答
11

OpenGL SuperBible 第 5 版已于近期发布。该版本反映了与 OpenGL 4.0 同时发布的 OpenGL 3.3,本书仅涵盖核心配置文件,假设您没有任何 OpenGL 知识。

无论如何,这就是我从书中的描述中得到的。我有第 4 版,它是 OpenGL 2.0 的极好资源,所以我认为新版以及最新的OpenGL 着色语言书将是您正在寻找的。

Durian Software有一系列涵盖现代 OpenGL 的教程。它们针对 OpenGL 2.0,但避免在以后的版本中使用任何已弃用的功能。

于 2010-08-09T17:02:24.133 回答
10

OpenGL 3.0 和 4.1 之间的差别真的很小。如果坚持 3.0 或更高版本的核心配置文件,则无法使用固定功能管道。您真正需要的是不使用固定功能管道的 OpenGL 教程。

Jason L. McKesson 的优秀教程“学习现代 3D 图形编程”开始使用着色器作为最早的基础知识,从未涉及固定函数管道。

http://www.arcsynthesis.org/gltut/index.html

我强烈推荐它。

于 2011-12-09T14:44:29.283 回答
5

我最近偶然发现了这本在线书籍: OpenGLBook.com

我还没有读过它,但描述说它是在线书籍格式的免费 OpenGL 4.0 编程资源。

于 2011-06-21T18:28:55.233 回答
4

很好的问题,真的。事实上,文档很少。

这里有一个很好的介绍:http ://sites.google.com/site/opengltutorialsbyaks/

您可能还喜欢 groovounet 的 ogl4 示例包:http ://www.g-truc.net/post-0310.html

但恐怕仅此而已。潜伏在 opengl 讨论板上以获取更多信息...

编辑:几秒钟前发现的。直接来自 SIGGRAPH http://nvidia.fullviewmedia.com/siggraph2010/02-dev-barthold-lichtenbelt-mark-kilgard.html

于 2010-08-09T11:49:43.593 回答
3

http://www.opengl.org/sdk/docs/man4/

有 OpenGL 4.1 的手册页,它们在开发时被证明是有用的。

于 2010-08-09T14:34:00.353 回答
2

我认为您最大的希望之一是乔的博客。它有一些关于现代 OpenGL 的很好的介绍性文章,还有更多(据说)在路上。

于 2010-08-09T19:01:50.467 回答
2

Swiftless 正在更新教程以包含新的上下文。一个很好的入门教程,关于快速简单的 VAO、VBO 和渲染更加直接,位于swiftless.com

于 2011-01-18T00:52:30.860 回答
2

没看过,但是OpenGL 4.0 Shading Language Cookbook

于 2012-07-26T14:32:36.370 回答
1

免费资源:

http://www.arcsynthesis.org/gltut/index.html

于 2012-06-01T04:20:16.720 回答
1

OpenGL 4 的重点是镶嵌,所以我想建议从 OpenGL 4 镶嵌的独立教程开始,即:http ://prideout.net/blog/?p=48

在手册和教程之后,一个很好的后续是查看基于“新”OpenGL 3/4 之上的开源引擎。作为开发人员之一,我会指出Linderdaum Engine

于 2012-05-08T21:52:46.297 回答