![](https://img-blog.csdnimg.cn/20191029164217937.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
一步步学OpenGL3.3+
文章平均质量分 88
OpenGL教程,计算机图形学基础。由于平台限制无法改回免费专栏,不想付费的同学请移步知乎专栏免费阅读:https://zhuanlan.zhihu.com/p/26230474
Mr_厚厚
iOS平台,Unity3D,Metal2,图形学
展开
-
【一步步学OpenGL 1】-《打开一个窗口》
@专栏介绍:这里开一个专栏,翻译OGLdev的系列教程《OpenGL Step by Step》,由于本人是个程序员,所以对教程不会完全的简单直译,会根据自己的理解进行一个汉语的解释以及补充,尽量将原文的意思介绍清楚。原文核心内容是对函数的详细解释,这里为了更容易理解,将作者的实例代码加注释后贴在后面代码片里,使程序员看上去更容易理解和动手测试。由于本人也在学习阶段,难免有理解不精确的地方,欢...翻译 2017-09-14 22:21:00 · 36071 阅读 · 17 评论 -
【一步步学OpenGL 2】-《你好顶点》
你好顶点原文:http://ogldev.atspace.co.uk/www/tutorial02/tutorial02.html背景这里要第一次开始使用GLEW(the OpenGL Extension Wrangler Library)库。GLEW可以帮助我们解决一些伴随OpenGL扩展库管理出现的一些头疼的问题,初始化之后,它会检索你平台中所有可用的扩展库,动态的加载并且可以通过简单引用一个头翻译 2016-09-10 00:10:54 · 24659 阅读 · 52 评论 -
【一步步学OpenGL 3】-《第一个三角形》
第一个三角形原文:http://ogldev.atspace.co.uk/www/tutorial03/tutorial03.html背景这篇教程非常简短,我们只是扩展前一个教程来渲染一个三角形。 这篇教程中我们依然使用那个单位化的盒子模型。可见的点必须在这个盒子内,这样他们将可以通过视窗的变换映射到窗口中可见的坐标上。当俯视Z坐标轴的负方向时这个单位化盒子看上去如下图:点(-1.0, -1.0)翻译 2016-09-10 13:27:12 · 15874 阅读 · 13 评论 -
【一步步学OpenGL 4】-《着色器》
教程4:着色器原文:http://ogldev.atspace.co.uk/www/tutorial04/tutorial04.html背景:从这篇教程开始,我们将使用shader着色器来实现每一个效果和技术点。着色器是目前做3D图形最流行的方式。在某种程度上我们可以说这是一个“退步”吧,或者说技术实现上的一个回退,因为本来多数固定功能管线提供的那些3D功能(开发者只需要定义配置参数即可实现的功能函翻译 2016-09-11 00:18:15 · 18784 阅读 · 54 评论 -
【一步步学OpenGL 5】-《一致变量Uniform Variables》
教程5:一致变量原文:http://ogldev.atspace.co.uk/www/tutorial05/tutorial05.html背景在这个教程中我们将遇到一个新的shader变量:一致变量(Uniform Variables)。一致变量和普通属性的区别:普通变量所包含的数据是顶点具体化的,所以在每个着色器引入的时候它们将从顶点缓冲区加载一个新的值;但是一致变量的值在整个draw call中翻译 2016-09-13 16:23:17 · 9014 阅读 · 12 评论 -
【一步步学OpenGL 6】 -《平移变换》
教程6:平移变换原文: http://ogldev.atspace.co.uk/www/tutorial06/tutorial06.html背景从这个教程开始我们开始研究各种各样的图形变换,图形变换就可以让一个3d物体在屏幕中变换的的时候看上去保持有深度的错觉,也就是立体的投影效果。实现立体效果的方法是使用一个经过多次相乘的变换矩阵得到的最终变换矩阵来和顶点的位置再相乘,这样得到3d物体的一个多次变翻译 2016-09-15 00:29:19 · 10473 阅读 · 8 评论 -
【一步步学OpenGL 7】 - 《旋转变换》
教程7旋转变换原文: http://ogldev.atspace.co.uk/www/tutorial07/tutorial07.htmlCSDN完整版专栏: http://blog.csdn.net/column/details/13062.html背景继上个教程的平移变换之后,这里开始学习旋转变换,也就是能够实现让一个点沿着一个坐标轴旋转一定的角度。旋转变换将总...翻译 2016-09-16 22:52:53 · 8987 阅读 · 5 评论 -
【一步步学OpenGL 8】 -《缩放变换》
教程8缩放变换原文: http://ogldev.atspace.co.uk/www/tutorial08/tutorial08.html背景缩放变换非常简单,它的目的是增大或者缩小物体的尺寸。比如你想使用同一个模型来制作很多不同的物体(大小不一的树组成的树林,用的同一个模型),或者你想按照比例让物体和现实世界尺寸一致。在上面的情形中你就需要在三个坐标轴上同等缩放顶点的位置。当然,有时也希望物体只在翻译 2016-09-17 00:06:16 · 7591 阅读 · 0 评论 -
【一步步学OpenGL 9】 -《插值》
教程9插值背景这个教程将介绍3d渲染管线中非常重要的一个部分:光栅器对从顶点着色器传来的变量的插值。通过之前的学习我们知道,为了让一些有意义东西在屏幕上真正显示,你必须将顶点着色器vs的输出变量设置为‘gl_Position’,gl_Position是一个保存着顶点齐次坐标的4维向量。XYZ分量被W分量所分割(称作视角分割,这个是教程的重点话题)并且XYZ分量上超出单位化盒子([-1,1])的部分会翻译 2016-09-17 14:03:01 · 8235 阅读 · 3 评论 -
【一步步学OpenGL 10】 -《索引绘制》
教程10索引绘制背景OpenGL提供了几个绘制函数,其中我们之前使用的glDrawArrays()属于顺序绘制的一个函数。顺序绘制是从指定的偏移量依次扫描顶点缓冲区所有图元的每一个顶点,这样很简单易用,但是缺点是如果一个顶点是多个图元的共同顶点,那么这个顶点将会在顶点缓冲区出现多次,也就是没有顶点共享的概念。顶点共享是通过索引绘制类的函数来实现的。这里除了顶点缓冲器额外需要有一个索引缓冲,索引缓冲中翻译 2016-09-17 19:52:07 · 6904 阅读 · 0 评论 -
【一步步学OpenGL 11】 -《复合变换》
教程11复合变换原文: http://ogldev.atspace.co.uk/www/tutorial11/tutorial11.html注:这个教程要添加更多的头文件了,基本上全了,其中用到了AntTweakBar这个库,安装很简单,和之前其他插件一样,去官网下载资源包,里面lib文件夹内已经有了编译好的dll和lib库,也可以运行vs项目自己重新编译。 将lib文件夹里面的dll文件复制到W翻译 2016-09-18 10:51:23 · 6600 阅读 · 22 评论 -
【一步步学OpenGL 12】 -《透视投影》
教程12透视投影原文: http://ogldev.atspace.co.uk/www/tutorial12/tutorial12.html CSDN完整版专栏: http://blog.csdn.net/column/details/13062.html 透视投影原理其他文章: http://blog.csdn.net/goncely/article/details/53977...翻译 2016-09-23 16:01:16 · 10249 阅读 · 19 评论 -
【一步步学OpenGL 13】 -《相机空间》
教程13相机空间背景在之前的几个教程我们已经学习了两种变换。第一种是基本变换,用来改变物体的位置(平移变换)、方向(旋转变换)、尺寸(缩放变换),可以将物体至于3d世界任意位置;第二种变换是透视投影变换用于将3d世界的一个顶点位置投射到2d世界(比如:一个平面),一旦坐标置于2d那么就很容易将他们映射到屏幕空间坐标系了。这些坐标实际上是用来将组成物体的图元(点、线、三角形等)光栅化。但还有一个疑惑的翻译 2016-09-25 16:24:24 · 8712 阅读 · 22 评论 -
【一步步学OpenGL 14】 -《相机控制1(键盘事件)》
教程14相机控制1(键盘事件)原文: http://ogldev.atspace.co.uk/www/tutorial14/tutorial14.html背景在之前的教程中我们学习了如何将相机至于3d世界的任意一个位置,下一步就要实现让用户来控制它。移动应该是不受限制的:用户可以在任何方向上移动。相机的控制通过两种输入设备来实现:使用键盘控制位置的移动,使用鼠标来改变目标视角,这个和第一人称射击角色翻译 2016-09-28 15:09:23 · 6378 阅读 · 12 评论 -
【一步步学OpenGL 15】 -《相机控制2(鼠标事件)》
教程15相机控制2(鼠标事件)原文: http://ogldev.atspace.co.uk/www/tutorial15/tutorial15.html* CSDN完整版专栏: * http://blog.csdn.net/column/details/13062.html背景在这个教程我们将实现鼠标控制相机的方向,从而完成所有有关相机的部分。对于相机的设计有很多不同程度的自由度设置,我们要完成的翻译 2016-10-09 19:30:45 · 6107 阅读 · 5 评论 -
【一步步学OpenGL 16】 -《纹理贴图》
教程16纹理贴图基础原文: http://ogldev.atspace.co.uk/www/tutorial16/tutorial16.htmlCSDN完整版专栏: http://blog.csdn.net/column/details/13062.html背景纹理贴图意思是将任意类型的图片贴在3d模型的一个或者多个面上。图片可以是任意的但通常是一种通用的样式,比如:砖块、植物、荒芜的土地等等,可以翻译 2016-10-15 22:23:37 · 16360 阅读 · 36 评论 -
【一步步学OpenGL 17】 -《环境光》
教程17环境光原文: http://ogldev.atspace.co.uk/www/tutorial16/tutorial16.htmlCSDN完整版专栏: http://blog.csdn.net/column/details/13062.html背景光照是是3D图形领域中一个最重要的对象之一。光照模型对于场景的渲染很重要,可以增添很多真实性效果。之所以叫做‘光照模型’是因为你不能去准确的去模拟翻译 2016-10-20 22:59:37 · 8092 阅读 · 7 评论 -
【一步步学OpenGL 18】 -《漫射光》
教程18漫射光原文: http://ogldev.atspace.co.uk/www/tutorial16/tutorial18.htmlCSDN完整版专栏: http://blog.csdn.net/column/details/13062.html背景漫射光和环境光的主要不同是漫射光的特性依赖光线的方向,而环境光完全忽略光的方向。当只有环境光时整个场景是被均匀照亮的,而漫射光使物体朝向它的那一面翻译 2016-10-25 19:06:30 · 5475 阅读 · 0 评论 -
【一步步学OpenGL 19】 -《镜面反射光》
教程19镜面反射光原文: http://ogldev.atspace.co.uk/www/tutorial19/tutorial19.htmlCSDN完整版专栏: http://blog.csdn.net/column/details/13062.html背景我们在计算环境光的时候,光的强度是唯一的影响因素。然后处理漫射光的时候公式中加入了光的方向参数。镜面反射包含了上面所有的综合因素并且添加了一个翻译 2016-11-01 16:02:32 · 5321 阅读 · 4 评论 -
【一步步学OpenGL 20】 -《点光源》
教程 20点光源原文: http://ogldev.atspace.co.uk/www/tutorial20/tutorial20.htmlCSDN完整版专栏: http://blog.csdn.net/column/details/13062.html背景之前已经学习了三个基本的光照模型(环境光,漫射光和镜面反射光),这三种模型都是基于平行光的。平行光只是通过一个向量来表示,没有光源起点,因此它不翻译 2016-11-09 10:51:38 · 5606 阅读 · 1 评论 -
【一步步学OpenGL 21】 -《聚光灯光源》
教程 21聚光灯光源原文: http://ogldev.atspace.co.uk/www/tutorial21/tutorial21.htmlCSDN完整版专栏: http://blog.csdn.net/column/details/13062.html背景聚光灯光源是目前这里要介绍的第三种也是最后一种光源类型了,它比平行光和点光源要复杂,但聚光灯光源其实是具有平行光和点光源核心特征的一种特殊光翻译 2016-11-19 18:36:39 · 6074 阅读 · 4 评论 -
【一步步学OpenGL 22】 -《OpenGL使用Assimp库导入3d模型》
教程 22OpenGL使用Assimp库导入3d模型原文: http://ogldev.atspace.co.uk/www/tutorial22/tutorial22.htmlCSDN完整版专栏: http://blog.csdn.net/column/details/13062.html背景通过之前的学习我们实现了很多不错的效果,但是我们并不能手能创建复杂的模型,可以想象通过代码来定义物体的每个顶翻译 2016-11-26 13:34:06 · 13272 阅读 · 3 评论 -
【一步步学OpenGL 23】 -《阴影图技术1》
教程 23阴影贴图1原文: http://ogldev.atspace.co.uk/www/tutorial23/tutorial23.htmlCSDN完整版专栏: http://blog.csdn.net/column/details/13062.html背景阴影和光是紧密联系的,正如你需要光才能投射出阴影。有许多的技术可以生成阴影,在接下来的两个章节中我们将学习一种基础而简单的技术-阴影贴图。当翻译 2016-12-21 15:03:42 · 7032 阅读 · 3 评论 -
【一步步学OpenGL 24】 -《阴影图技术2》
教程 24阴影贴图2原文: http://ogldev.atspace.co.uk/www/tutorial24/tutorial24.htmlCSDN完整版专栏: http://blog.csdn.net/column/details/13062.html背景在之前的教程中,我们学习了阴影贴图技术背后的基本原理,并学习了如何在纹理中渲染深度信息并通过从深度缓冲中采样将其显示在屏幕上。这个教程我们将翻译 2017-01-05 13:02:53 · 3023 阅读 · 3 评论 -
【一步步学OpenGL 25】-《Skybox天空盒子》
教程 25Skybox天空盒子原文: http://ogldev.atspace.co.uk/www/tutorial25/tutorial25.htmlCSDN完整版专栏: http://blog.csdn.net/column/details/13062.html背景天空盒子是一种让场景看上去更广阔无垠的一种视觉技术,用无缝对接的封闭纹理将摄像机的视口360度无死角的包裹起来。封闭纹理通常是天空翻译 2017-01-21 16:48:17 · 8701 阅读 · 2 评论 -
【一步步学OpenGL 26】-《法线贴图》
教程 26法线贴图原文: http://ogldev.atspace.co.uk/www/tutorial26/tutorial26.htmlCSDN完整版专栏: http://blog.csdn.net/column/details/13062.html背景之前的我们的光线着色器类已经可以达到很不错的效果了,光线效果通过插值计算遍布到整个模型表面,使整个场景看上去比较真实,但这个效果还可以进行更好翻译 2017-04-03 17:40:31 · 9086 阅读 · 2 评论 -
【一步步学OpenGL 27】 -《公告牌技术与几何着色器》
教程 27公告牌技术与几何着色器原文: http://ogldev.atspace.co.uk/www/tutorial27/tutorial27.htmlCSDN完整版专栏: http://blog.csdn.net/column/details/13062.html背景从最初的一系列教程我们已经应用过了顶点着色器和片段着色器,但事实上我们还忽略了一个非常重要的着色阶段,叫做几何着色器(GS)。几翻译 2017-05-01 16:56:40 · 4819 阅读 · 2 评论 -
【一步步学OpenGL 28】 -《Transform Feedback粒子系统》
教程 28Transform Feedback粒子系统原文: http://ogldev.atspace.co.uk/www/tutorial28/tutorial28.htmlCSDN完整版专栏: http://blog.csdn.net/column/details/13062.html背景粒子系统是一种模拟像烟雾、灰尘、火焰、雨等自然现象的技术统称。这些自然现象的共性是它们都是由大量的小粒子组翻译 2017-07-21 22:03:48 · 5747 阅读 · 4 评论 -
【一步步学OpenGL 29】-《3D拾取》
教程 29三维拾取原文: http://ogldev.atspace.co.uk/www/tutorial29/tutorial29.htmlCSDN完整版专栏: http://blog.csdn.net/column/details/13062.html背景3D拾取指的是将鼠标在屏幕上点击的位置匹配到3d游戏场景中的某个图元上,该图元投影到屏幕上的像素恰好就是...翻译 2018-03-15 10:20:28 · 5207 阅读 · 1 评论 -
【一步步学OpenGL 30】 -《曲面细分基础》
教程 30曲面细分基础原文: http://ogldev.atspace.co.uk/www/tutorial30/tutorial30.htmlCSDN完整版专栏: http://blog.csdn.net/column/details/13062.html背景曲面细分技术是OpenGL 4.x加入的一个令人振奋的新特性。曲面细分处理的核心是3d模型的细节和多...翻译 2018-07-03 15:15:14 · 5382 阅读 · 1 评论 -
【一步步学OpenGL 31】 -《PN(Point-Normal)三角形曲面细分》
教程 31PN(Point-Normal)三角形曲面细分原文: http://ogldev.atspace.co.uk/www/tutorial31/tutorial31.htmlCSDN完整版专栏: http://blog.csdn.net/column/details/13062.html理论介绍上一个教程我们介绍了OpenGL 4.x中的曲面细分基础技术(本章教程的内容是在上一...翻译 2019-10-04 15:52:09 · 1007 阅读 · 0 评论 -
【一步步学OpenGL 32】 -《顶点数组对象VAO》
教程 32顶点数组对象VAO原文: http://ogldev.atspace.co.uk/www/tutorial32/tutorial32.htmlCSDN完整版专栏: http://blog.csdn.net/column/details/13062.html理论介绍顶点数组对象(VAO,Vertex Array Object)用来封装所有和定点处理器相关的数据的特殊对象。它并...翻译 2019-10-04 16:53:49 · 701 阅读 · 0 评论 -
【一步步学OpenGL(33) 】-《实例渲染》
教程 33实例渲染原文: http://ogldev.atspace.co.uk/www/tutorial33/tutorial33.htmlCSDN完整版专栏: https://blog.csdn.net/cordova/article/category/9266966理论介绍假设我们想渲染一个有一支庞大军队经过的场景,我们要用一个士兵的模型渲出成千上万的士兵大军。一种方法是每次绘...翻译 2019-10-09 11:36:27 · 836 阅读 · 0 评论 -
【一步步学OpenGL(34) 】-《GLFX,一个OpenGL效果库》
教程 34GLFX,一个OpenGL效果库原文: http://ogldev.atspace.co.uk/www/tutorial34/tutorial34.htmlCSDN完整版专栏: https://blog.csdn.net/cordova/article/category/9266966理论介绍这篇教程暂时先不继续探索OpenGL的特性和3D技术了,来介绍一下GLFX,一个O...翻译 2019-10-09 11:33:30 · 877 阅读 · 1 评论 -
【一步步学OpenGL(35)】 -《延迟渲染(一)》
教程 34延迟渲染(一)原文: http://ogldev.atspace.co.uk/www/tutorial35/tutorial35.htmlCSDN完整版专栏: https://blog.csdn.net/cordova/article/category/9266966理论介绍从教程17开始我们的光照计算渲染路径都是前向渲染。前向渲染是一种最直接的光照计算渲染路径,我们在VS...翻译 2020-02-13 17:48:07 · 952 阅读 · 0 评论 -
【一步步学OpenGL(36)】 -《延迟渲染(二)》
教程 36延迟渲染(二)原文: http://ogldev.atspace.co.uk/www/tutorial36/tutorial36.htmlCSDN完整版专栏: https://blog.csdn.net/cordova/article/category/9266966理论介绍上个教程我们学习了延迟渲染的基础原理,并从几何阶段第一个pass计算得到了G-buffer组合数据(...翻译 2020-02-25 11:21:32 · 630 阅读 · 0 评论 -
【一步步学OpenGL(37) 】-《延迟渲染(三)》
教程 37延迟渲染(三)[模板测试][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rxb67rH1-1599744879773)(http://ogldev.atspace.co.uk/tutorial37.jpg)]原文: http://ogldev.atspace.co.uk/www/tutorial37/tutorial37.htmlCSDN完整版专栏: https://blog.csdn.net/cordova/article/category/9266966翻译 2020-09-10 21:36:32 · 507 阅读 · 0 评论 -
【一步步学OpenGL(38) 】-《Assimp库实现骨骼蒙皮动画》
教程 38Assimp库实现骨骼蒙皮动画原文: http://ogldev.atspace.co.uk/www/tutorial38/tutorial38.htmlCSDN完整版专栏: https://blog.csdn.net/cordova/article/category/9266966理论介绍***骨骼动画(Skeletal animation)***,也叫***骨骼蒙皮(Skinning)***,这里我们介绍使用Assimp这个库来实现骨骼动画。骨骼动画的制作实际上分为两个阶段,第翻译 2020-09-16 18:41:26 · 1733 阅读 · 0 评论 -
【一步步学OpenGL 39】 -《模型轮廓识别检测[阴影锥1]》
教程 39模型轮廓识别检测[阴影锥1]原文: http://ogldev.atspace.co.uk/www/tutorial39/tutorial39.htmlCSDN完整版专栏: https://blog.csdn.net/cordova/article/category/9266966理论介绍这篇我们讨论一种检测物体轮廓的方法,确切的说,这里的轮廓指的是当光源从任意方向照向3D物体时创建的3D轮廓,当移动光源时,轮廓很可能会跟着改变。这个和在二维图像空间识别轮廓的原理是完全不同的,图像的翻译 2020-12-08 16:56:55 · 703 阅读 · 0 评论 -
【一步步学OpenGL(40)】 -《模板阴影锥》
教程 40模板阴影锥原文: http://ogldev.atspace.co.uk/www/tutorial40/tutorial40.htmlCSDN完整版专栏: https://blog.csdn.net/cordova/article/category/9266966理论介绍在教程23和24中,我们介绍了shadow map,相对简单的获取到了3D世界的阴影。但是在光源为点光源的情况下,使用shadow map来计算阴影就不太合适了。因为shadow map的计算需要光源的方向向量(平行翻译 2021-11-26 18:34:15 · 479 阅读 · 0 评论