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 OpenGLAMD 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 programmingEfficient real-time shadowsOpenGL 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编程:OpenCLCUDAOpenACCC++ AMP,里面都会说GPU架构;

国内有个GPU论坛:HPC论坛,里面也有GPU的资料;

ozone3d.netgeeks3d.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的学习资源的更多相关文章

  1. OpenGL 开始学习指南

    近期需要做一个涌潮的预报与仿真模拟,为了使模型更具有真实感,且逼真,使用起来更灵活.感觉还是得从基础的OpenGL学习.鉴于Direct3D技术存在的众多不确定性,且评论不太好的原因,决定用OpenG ...

  2. opengl入门学习

    OpenGL入门学习 说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640 ...

  3. iOS 学习资源

    这份学习资料是为 iOS 初学者所准备的, 旨在帮助 iOS 初学者们快速找到适合自己的学习资料, 节省他们搜索资料的时间, 使他们更好的规划好自己的 iOS 学习路线, 更快的入门, 更准确的定位的 ...

  4. OpenGL ES学习笔记(三)——纹理

    首先申明下,本文为笔者学习<OpenGL ES应用开发实践指南(Android卷)>的笔记,涉及的代码均出自原书,如有需要,请到原书指定源码地址下载. <OpenGL ES学习笔记( ...

  5. OpenGL入门学习(转)

    OpenGL入门学习 http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html 说起编程作图,大概还有很多人想起TC的#includ ...

  6. 一份C++学习资源,咬牙切齿地好用呀

    多年以后,你已经是一名技术总监,有一个美丽的妻子,两个孩子:你已经拥有了现在的你想都不敢想的一切:那时,你也一定会忘记,今天这篇教程,如同一颗石子,铺就过你前进的路. 下面是我们的老师根据现有资源整理 ...

  7. OpenGL入门学习(转载)

    说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640*480分辨率.16色 ...

  8. opengl基础学习专题 (一 )编程环境搭建

    题外话: 第一次在博客园上同大家分享博文.水的的地方,错别字的地方.环境交流.批评.知道了马上改. 以前在百度空间中写技术分享博文,后来百度啥也没说就把整个空间封了.当时感觉 还是有点寒心.只想黑一下 ...

  9. SCARA——OpenGL入门学习五六(三维变换、动画)

    OpenGL入门学习(五) 此课为三维变换的内容,比较枯燥.主要是因为很多函数在单独使用时都不好描述其效果, 在前面绘制几何图形的时候,大家是否觉得我们绘图的范围太狭隘了呢?坐标只能从-1到1,还只能 ...

随机推荐

  1. php实现递归的三种方式: 遍历文件夹实例

    递归函数是我们常用到的一类函数,最基本的特点是函数自身调用自身,但必须在调用自身前有条件判断,否则无限无限调用下去.实现递归函数可以采取什么方式呢?本文列出了三种基本方式.理解其原来需要一定的基础知识 ...

  2. 揭秘JavaScript中谜一样的this

      揭秘JavaScript中谜一样的this 在这篇文章里我想阐明JavaScript中的this,希望对你理解this的工作机制有一些帮助.作为JavaScript程序员学习this对于你的发展有 ...

  3. 20140701立项 移植WatermarkLabelSys

    开始移植WatermarkLabelSys,从一个版本中抽离出最原始的内核,不求完善,只求能运行.时间半个月. 顺利的话针对不同的后缀.进程开始添加规则细节,时间1个月. 在顺利的话,兼容性测试,完善 ...

  4. 阅读摘录《javascript 高级程序设计》01

    前言: 因为工作需要,所以开始主攻前台JS方面的技术.在以前的工作中,使用过这门脚本语言.但是都是比较凌乱的,用到什么学什么,只是为了实现业务,而去使用. 不会考虑到代码优化,封装对象等.今次特意借了 ...

  5. C#自动生成漂亮的水晶效果头像

    C#自动生成漂亮的水晶效果头像 与其他的微博系统相同,在“多可内网微博系统”的用户也可上传自己的头像,并支持头像裁剪. 但“多可内网微博系统”的头像可以更漂亮,因为系统实现了水晶效果的头像.C#程序实 ...

  6. http get/post解决乱码问题

    <form method="默认为get"-> <s:form mothod="默认为post"-> ================= ...

  7. $scope 的生命周期

    当Angular关心的事件发生在浏览器中时,比如用户在通过ng-model属性监控的输入字段中输入,或者带有ng-click属性的按钮被点击时,Angular的事件循环都会启动.这个事件将在Angul ...

  8. memset函数详解

    语言中memset函数详解(2011-11-16 21:11:02)转载▼标签: 杂谈 分类: 工具相关  功 能: 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大 ...

  9. 阿伦学习html5 之Web SQL Database

    不知道什么情况, W3C不再维护web SQL Database规范,但是大多浏览器都支持了! Web SQL Database规范页面有着这样的声明 Web SQL Database 规范中定义的三 ...

  10. iOS进阶之多线程

    多线程 注意:iOS关于UI的刷新和添加必须在主线程中操作! pthread的创建方法: pthread_t pthread; //第一个参数 线程指针 //第二个参数 线程的一些属性 //第三个参数 ...