OpenGL的学习资源
OpenGL是3D图形接口工业标准,使用上非常简单,所有API不过上百个函数,但理解OpenGL就没那么简单,本文总结OpenGL的学习资源,包括官方资料、网上教程、示例程序等。
Wikipedia:
OpenGL,介绍了OpenGL的历史及版本;
Graphics processing unit,介绍了GPU,由于OpenGL更像个底层驱动,了解GPU对理解OpenGL很重要。
书籍:
红宝书(The Red Book),OpenGL Programming Guide,目前最新版第8版(2013),中文译本最新第7版,第8版较第7版几乎彻底改版(第8版英文版网上有PDF);
蓝宝书(The Blue Book),OpenGL Superbible: Comprehensive Tutorial and Reference,目前最新第6版(2013),中文译本最新第5版;
GPU Gens 3,非常好的高阶技术书籍,有很多高级的基于着色器的图形编程知识及技巧;
更多书籍请见OpenGL官网书籍列表。
官网:
OpenGL主页,这里有非常多的资源,如API规范(Specifications)及快速参考卡(Quick Reference Card)(强烈建议参考)、在线文档、Wiki及所列的代码资源和相关工具(Getting Started页列了更多链接)、论坛等;
Khronos Group,OpenGL标准由该小组维护,该组织还掌管着OpenGL的嵌入式版(移动版)OpenGL ES和网页版WebGL,以及异构并行计算语言OpenCL;
两大显卡巨头的OpenGL资源:NVIDIA OpenGL、AMD OpenGL,上面有很多酷炫的Samples。
下图是从Quick Reference Card 4.4中摘的“OpenGL Pipeline”(Specification 4.4中有详细解释):

顶级课程:
图形学顶级会议SIGGRAPH和Eurographics几乎每年都会有关于OpenGL的课程:
SIGGRAPH 2014 Introduction to modern OpenGL programming, 2013 An introduction to OpenGL programming, Efficient real-time shadows, OpenGL and DirectX, 往年的还有很多,请自行到dl.acm.org搜索“ACM SIGGRAPH 20xx Courses”并点“Table of Contents”选项卡。
Eurographics 2014 STAR State of the Art Report on Real-time Rendering with Hardware Tessellation, 2014 Tutorial Efficient Sorting and Searching in Rendering Algorithms, 更多技术报告和课程请见 Eurographics 档案。
如果文章不能下载,请到Google学术或Google搜索,很有可能能搜到作者网站的下载链接,还有可能搜到报告PPT和视频。
网上教程:
http://www.opengl-tutorial.org/:很好的教程网站,部分教程有中文版;
http://ogldev.atspace.co.uk/:被上一个网站认为是竞争对手;
http://open.gl/:同样介绍了现代OpenGL编程;
Nehe的教程,关键是有中文翻译版,但是比较老了,可以用来学习经典管线功能;
http://arcsynthesis.org/gltut/:一个非常详尽的教程;
http://antongerdelan.net/opengl/:比较全面,除了OpenGL,还有计算机动画相关的;
另外,OpenGL官网上也有一些教程的链接(Getting Started页后面有更多),和代码资源;
遇到编程问题,可以到Stack Overflow(一个程序设计领域的问答网站)看看是不是有人问过这个问题。
下图是ogldev.atspace.co.uk的截图:

计算机图形学:
请参考我另一篇博客:计算机图形学的学习资源。
GPU硬件:
了解GPU架构对理解OpenGL有极大帮助,可以学一学GPU编程:OpenCL、CUDA、OpenACC、C++ AMP,里面都会说GPU架构;
国内有个GPU论坛:HPC论坛,里面也有GPU的资料;
ozone3d.net和geeks3d.com上有GPU检测或性能测试的小工具,也有示例代码和教程;
Pennsylvania大学课程CIS 565: GPU Programming and Architecture,讲了GPU编程及图形学编程,它推荐的参考书有中译本《大规模并行处理器编程实践》(David B. Kirk等著,赵开勇等译)。
下面三幅图分别描述了CPU和GPU连接关系、GPU架构(图中MP在CUDA书中叫做SM)、CPU架构:

(该图取自Wikipedia,这里,该图可能过时了,见这里)

(该图取自Aurélien Plyer主页,这里)

(该图取自这里)
OpenGL的学习资源的更多相关文章
- OpenGL 开始学习指南
近期需要做一个涌潮的预报与仿真模拟,为了使模型更具有真实感,且逼真,使用起来更灵活.感觉还是得从基础的OpenGL学习.鉴于Direct3D技术存在的众多不确定性,且评论不太好的原因,决定用OpenG ...
- opengl入门学习
OpenGL入门学习 说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640 ...
- iOS 学习资源
这份学习资料是为 iOS 初学者所准备的, 旨在帮助 iOS 初学者们快速找到适合自己的学习资料, 节省他们搜索资料的时间, 使他们更好的规划好自己的 iOS 学习路线, 更快的入门, 更准确的定位的 ...
- OpenGL ES学习笔记(三)——纹理
首先申明下,本文为笔者学习<OpenGL ES应用开发实践指南(Android卷)>的笔记,涉及的代码均出自原书,如有需要,请到原书指定源码地址下载. <OpenGL ES学习笔记( ...
- OpenGL入门学习(转)
OpenGL入门学习 http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html 说起编程作图,大概还有很多人想起TC的#includ ...
- 一份C++学习资源,咬牙切齿地好用呀
多年以后,你已经是一名技术总监,有一个美丽的妻子,两个孩子:你已经拥有了现在的你想都不敢想的一切:那时,你也一定会忘记,今天这篇教程,如同一颗石子,铺就过你前进的路. 下面是我们的老师根据现有资源整理 ...
- OpenGL入门学习(转载)
说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640*480分辨率.16色 ...
- opengl基础学习专题 (一 )编程环境搭建
题外话: 第一次在博客园上同大家分享博文.水的的地方,错别字的地方.环境交流.批评.知道了马上改. 以前在百度空间中写技术分享博文,后来百度啥也没说就把整个空间封了.当时感觉 还是有点寒心.只想黑一下 ...
- SCARA——OpenGL入门学习五六(三维变换、动画)
OpenGL入门学习(五) 此课为三维变换的内容,比较枯燥.主要是因为很多函数在单独使用时都不好描述其效果, 在前面绘制几何图形的时候,大家是否觉得我们绘图的范围太狭隘了呢?坐标只能从-1到1,还只能 ...
随机推荐
- php生成图片缩略图,支持png透明
注:此功能依赖GD2图形库 PHP生成缩略图类 <?php /* * desc: Resize Image(png, jpg, gif) * author: 十年后的卢哥哥(http://w ...
- Sql 获取向上取整、向下取整、四舍五入取整的实例
[四舍五入取整截取] select round(54.56,0) [向下取整截取] SELECT FLOOR(54.56) [向上取整截取] SELECT CEILING(13.15) --MS ...
- Laravel框架 mysql 数据库 —— 基本使用
增删改查 配置完数据库连接,就可以使用DB类进行查询了. 查询 $results = DB::select('select * from users where id = ?', array(1)); ...
- SELECT INTO 和 INSERT INTO区别
(1).SELECT * INTO 新表名 FROM 旧表名 (2).INSERT INTO 新表名(列名1,列名2) SELECT * FROM 旧表名 第一句新表名不存在会自动创建, 第二句需创建 ...
- python学习08——类
笨办法学python第42节,这节讲的是类,程序沿用上一节中一个游戏,不同的是这一节用了类的方法. 其中改动的代码主要如下 原来的最后几句用了这样的代码: ROOMS = { 'death':deat ...
- MFC 对话框控件自动布局
MFC 设计界面程序总是不够智能,没有这样,没有那样. 今天为了加强mfc功能,设计了一个自动布局的类,使用非常简单. 原理: 每个控件都有一个矩形区域,矩形区域就是控件在对话框中的显示位置和大小, ...
- java nio 与io区别
转自:http://blog.csdn.net/keda8997110/article/details/19549493 当学习了Java NIO和IO的API后,一个问题马上涌入脑海: 我应该何时使 ...
- 写一个程序,用于分析一个字符串中各个单词出现的频率,并将单词和它出现的频率输出显示。(单词之间用空格隔开,如“Hello World My First Unit Test”)
public class Test { public void index() { String strWords = "Hello World My First Unit Test&quo ...
- .NET网页打印以及使用打印需要注意的事项(可能会引起VS崩溃的现象、打印预览后关闭功能不管用)
这两天进行给网页添加打印.打印预览.页面设置的功能.遇到了以下几个问题 [1]在网上查找了一些打印方法,一开始还可以用,后来不知道动到了哪里,点击vs中拆分或者切换到另一个设计和源代码显示方式,就会引 ...
- a标签的herf和click事件
在动态网页中,常常需要在单击超链接时处理一些数据,而不是跳转一个网页.在这种情况下,通常有以下三种处理方式: 不设置<a>标签的href属性,只设置onclick属性.在这种处理方式下,通 ...