我知道有一些问题与学习OpenGL相关。以下是我的了解:
- 3D数学
- 3D理论
以下是我想了解的: - OpenGL 4.0核心框架(或更高版本) - 着色器语言 400(或更高版本) - 上述内容的每一个方面(即使它不能跨供应商使用,也不会对我造成麻烦)
以下是我不想了解的: - 固定功能管线(永远不会使用!) - 较旧的OpenGL版本 - 兼容性框架
我更喜欢较完整的信息,例如教程,文章系列和书籍。
PS:如果您知道关于OpenGL 3.x核心框架的资源,请也一并提供。
我知道有一些问题与学习OpenGL相关。以下是我的了解:
以下是我想了解的: - OpenGL 4.0核心框架(或更高版本) - 着色器语言 400(或更高版本) - 上述内容的每一个方面(即使它不能跨供应商使用,也不会对我造成麻烦)
以下是我不想了解的: - 固定功能管线(永远不会使用!) - 较旧的OpenGL版本 - 兼容性框架
我更喜欢较完整的信息,例如教程,文章系列和书籍。
PS:如果您知道关于OpenGL 3.x核心框架的资源,请也一并提供。
我非常不喜欢负面的回答,但是我必须给这个问题一个负面答案。
您最终要求的是使用OpenGL 4.0及以上版本唯一功能的初学者材料。那么,让我们来看看4.x的一些独特功能。
也许最大的特点是曲面细分(tessellation)。这是什么意思?它意味着通过细分原语来生成更多原语。在理解这意味着什么之前,必须先了解如何渲染原语。这使用了低于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有一些不错的链接集合。为了完整公开,我写过其中一个。
OpenGL超级宝典第五版最近发布了。该版本反映了OpenGL 3.3,与OpenGL 4.0同时发布,该书仅涵盖核心概念,并假设读者没有先前的OpenGL知识。
这是我从书籍描述中了解到的。我有第四版,它是OpenGL 2.0的绝佳资源,因此我认为新版连同最新的OpenGL着色语言书籍是你正在寻找的。
Durian Software有一系列涵盖现代OpenGL的教程。它们针对OpenGL 2.0,但避免使用任何后续版本中已弃用的功能。
OpenGL 3.0和4.1之间的区别实际上非常小。如果您坚持使用3.0或更高版本的核心配置文件,您将无法使用固定功能渲染管线。你真正需要的是一个不使用固定功能渲染管线的OpenGL教程。
Jason L. McKesson的优秀教程《学习现代3D图形编程》从最基本的阶段开始使用着色器,从未涉及固定功能渲染管线。
http://www.arcsynthesis.org/gltut/index.html
我强烈推荐它。
我最近偶然发现了这本在线书籍:OpenGLBook.com
虽然我还没有阅读它,但描述显示它是一本以在线书籍形式呈现的免费OpenGL 4.0编程资源。
非常好的问题。实际上,有关文档相对较少。
这里有一个很好的介绍: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
http://www.opengl.org/sdk/docs/man4/
这里是OpenGL 4.1的手册页面,对于开发过程非常有用。
Swiftless正在更新教程,以包含新的内容。一篇良好的起始教程,它在快速和简单的VAO、VBO和渲染方面更加直观,位于swiftless.com
。我认为你最好的希望之一是Joe的博客。它有几篇关于现代OpenGL的入门文章,而且还有更多(据说)的文章正在路上。
OpenGL 4 的主要重点是细分,因此我建议从 OpenGL 4 细分的独立教程开始学习,例如:http://prideout.net/blog/?p=48。
在学习手册和教程之后,一个很好的跟进是看看那些基于“新”OpenGL 3/4的开源引擎。作为其中一名开发者,我会推荐 Linderdaum Engine。