OPENGL学习脚印
OPENGL学习脚印
声明:本文转载自wangdingqiao的博客专栏–OPENGL学习脚印,仅仅对OPENGL学习脚印专栏的文章进行了整理,方便初学者按照顺序学习。同时也在这里感谢原创博主提供的学习笔记。
1、环境搭建
我们需要下载和编译两个第三方库:
GLEW 负责绘图函数的获取
GLFW 负责创建绘图上下文和窗口系统管理
下载并编译后,获取到两个库的lib和dll文件,我们就可以开始编写第一个程序了。
2、绘制一个三角形
3、使用索引绘图(index drawing)
熟悉了OpenGL绘图的中基本的VAO和VBO,以及着色器,并绘制了一个三角形。本节在上一节基础上,介绍利用EBO的索引绘图。
4、缓冲对象相关函数的使用(buffer object function usage)
5、几何着色器(geometry shader)
6、向量和矩阵(math-vector and matrices)
前面几节内容环境搭建,绘制三角形,以及使用索引绘制,让我们对现代OpenGL中绘图做了简单了解。要继续后面的部分,需要熟悉OpenGL中涉及的数学知识。因此本节开始介绍OpenGL中的基本数学。
7、坐标和变换(math-coordinates and transformations)
上一节介绍了向量和矩阵,本节将熟悉坐标、线性变换、仿射变换以及坐标转换等概念和计算方法,这些内容对后续的学习将会有很大帮助。部分内容不是OpenGL编程初学者所必须掌握的,可以在以后需要时再回头来看。
8、二维纹理映射(2D textures)
9、立方体纹理和天空包围盒(Cubemaps And Skybox)
10、环境纹理映射(environment mapping)
上一节初步学习了使用cubeMap创建天空包围盒,本节继续深入Cubemap这个主题,学习环境纹理贴图。
11、模型变换(model transformation)
12、视变换(view transformation)
13、欧拉角实现第一人称相机(FPS camera with Euler angle)
14、投影矩阵和视口变换矩阵(math-projection and viewport matrix)
前面几节分别介绍了模型变换,视变换,本节继续学习OpenGL坐标变换过程中的投影变换。这里主要是从数学角度推导投影矩阵。对数学不感兴趣的,可以稍微了解下,或者跳过本节内容。
15、坐标变换过程(vertex transformation)
前面几节分别介绍了模型变换,视变换,以及给出了投影矩阵和视口变换矩阵的推导,本节从全局把握一遍OpenGL坐标转换的过程,从整体上认识坐标变换过程。相关矩阵的数学推导过程请参考前面几节对应的内容。
16、光照基础(basic lighting)
17、光照中材质和lighting maps使用(material and lighting maps)
18、Blinn-Phong光照模型
在前面基础光照部分,我们学习了Phong Shading模型,Blinn-Phong模型对Phong模型的镜面光成分进行了改进,虽然在物理上解释没有Phong好,但是能更好地模拟光照。
19、光源类型和使用多个光源(Light source and multiple lights)
20、模型加载初步-加载obj模型(load obj model)
21、AssImp模型加载
22、创建更多的实例(instancing object)
23、深度测试(depth testing)
24、模板测试(stencil testing)
上一节介绍了深度测试,本节继续学习一个高级主题-模板测试(stencil testing)。模板缓冲同之前介绍的颜色缓冲、深度缓冲类似,通过它我们可以实现很多的特效,例如轮廓、镜面效果,阴影效果等。
OPENGL学习脚印相关推荐
- OpenGL学习脚印: 二维纹理映射(2D textures)
写在前面 前面两节介绍了向量和矩阵,以及坐标和转换相关的数学,再继续讨论模型变换等其他包含数学内容的部分之前,本节介绍二维纹理映射,为后面学习做一个准备.纹理映射本身也是比较大的主题,本节只限于讨论 ...
- OpenGL学习脚印:立方体纹理和天空包围盒(Cubemaps And Skybox)
写在前面 之前学习了2D纹理映射,实际上还有其他类型的纹理有待我们进一步学习,本节将要学习的立方体纹理(cubemaps),是一种将多个纹理图片复合到一个立方体表面的技术.在游戏中应用得较多的天空包围 ...
- OpenGL学习脚印: 帧缓冲对象(Frame Buffer Object)
写在前面 一直以来,我们在使用OpenGL渲染时,最终的目的地是默认的帧缓冲区,实际上OpenGL也允许我们创建自定义的帧缓冲区.使用自定义的帧缓冲区,可以实现镜面,离屏渲染,以及很酷的后处理效果.本 ...
- OpenGL学习脚印:缓冲对象相关函数的使用(buffer object function)
OpenGL中还包含除了我们前面介绍的VAO,VBO,EBO等其他类型的缓冲对象.本文将通过简洁.可靠的例子说明一些重要方法的使用,以辅助学习这些方法.本文的目的不是写成详细而厚重的手册,对于文中未详 ...
- OpenGL学习脚印:缓冲对象相关函数的使用(buffer object function usage)
本文转自点击打开链接,作者是the fool OpenGL中还包含除了我们前面介绍的VAO,VBO,EBO等其他类型的缓冲对象.关于如何使用这些缓冲对象的手册或者参考书籍上解释得非常详细,但是阅读起来 ...
- OpenGL学习脚印:模型加载初步-加载obj模型(load obj model)
写在前面 前面介绍了光照基础内容,以及材质和lighting maps,和光源类型,我们对使用光照增强场景真实感有了一定了解.但是到目前为止,我们通过在程序中指定的立方体数据,绘制立方体,看起来还是很 ...
- OpenGL学习脚印:光源类型和使用多个光源(Light source and multiple lights)
写在前面 上一节光照中使用材质和lighting maps介绍了使用材质属性和lighting maps使物体的光照效果能反映物体的材料特性,看起来更逼真.在前面的章节中使用的实际上都是一个点光源,本 ...
- OpenGL学习脚印: 投影矩阵和视口变换矩阵
OpenGL中的视图可以利用照相机来进行比拟.产生目标的场景的变过过程类似于相机拍照.此步骤大概分为三个: 1)把相机固定在三角架上,并让它对准场景(视图变换) 2)对场景安排,使得各个物体在招片中的 ...
- OpenGL学习脚印:伽马校正(Gamma Correction)
写在前面 由于CRT,LED等显示设备显示颜色时并非按照线性方式工作,因此我们在程序中输出的颜色,最终输出到显示器上时会产生亮度减弱的现象,这种现象在计算光照和实时渲染时对图形质量有一定影响,需要我们 ...
最新文章
- iOS学习笔记(十三)——获取手机信息(UIDevice、NSBundle、NSLocale)
- 【CTF】实验吧 围在栅栏中的爱
- 哈佛CASTER | 基于化学子结构表征预测药物相互作用
- 计科系大一c语言期末考试题,大一大学计算机基础期末考试试题「附答案」
- 实用教程:如何制作学术会议Oral/Spotlight Video?
- 管理实践-教练技术的应用
- one-hot encoding 并非分类变量编码的唯一选择
- server sql 无法从long转为int_MySQL中,21个写SQL的好习惯(修正版)
- c++ 箭头符号怎么打_C++随笔
- 上传本地代码到github
- c语言禁止窗口关闭,无法关闭窗口的程序
- [转] Async/Await替代Promise的6个理由
- matlab及机器学习
- 用React实现基于Canvas的图片放大镜功能
- 高中计算机会考vb试题,高中信息技术考试vb程序题及答案
- 海康威视摄像头密码重置方法
- 产业驱动消费升级 百果园获品途 2018“商业变革影响力”奖
- 如何在AD软件中创建自定义区域铺铜
- 【LabVIEW小技巧】LabVIEW自定义系统按钮时图片项设置说明
- 【小程序源码】圣诞节头像框制作生成支持多模板
热门文章
- Android 子线程更新主线程UI视图
- 产品经理经常遇到的诸多问题(一)
- 洛谷 P3674 小清新人渣的本愿 bitset+莫队
- RuntimeError: 1only batches of spatial targets supported (non-empty 3D tensors) but got targets of s
- Arcgis加载在线地图(内涵各种在线地图)
- 真心相爱要做的21件事
- hdfs missing blocks corrupt blocks
- Android 格式化分区命令
- 全球银行市值排行榜:工建中排名前三
- Python视觉深度学习系列教程 第三卷 第2章 什么是ImageNet?