OpenGL学习
文章平均质量分 97
OpenGL学习
AkagiSenpai
哼 ~ 哼 啊啊啊啊啊啊啊啊啊
▃▆█▇▄▖
▟◤▖ ◥█▎
◢◤ ▐ ▐▉
▗◤ ▂ ▗▖ ▕█▎
◤ ▗▅▖◥▄ ▀◣ █▊
▐ ▕▎◥▖◣◤ ◢██
█◣ ◥▅█▀ ▐██◤
▐█▙▂ ◢██◤
◥██◣ ◢▄◤
▀██▅▇▀
展开
-
体积云渲染实战:ray marching,体积云与体积云光照
今天来搞个赛艇的特技 ---- 体积云。通过 ray marching 算法可以进行体积云渲染。ray marching 算法从摄像机开始,向世界空间投射光线,并且逐步行进,记录沿途的信息,最后根据积累的信息进行云朵的绘制。此外,通过偏移采样的方式来判断云朵的光照情况。最后针对渲染的场景问题进行了优化。原创 2021-01-25 16:52:16 · 14040 阅读 · 20 评论 -
OpenGL学习(十一):延迟渲染管线
在这之前的博客,我们都是使用 “前向渲染” 来对生成的像素做处理,比如我们可以为每一个像素添加光照,阴影等效果。但是今天我们要引入一种更加高级的渲染方式 ---- 延迟渲染。延迟渲染是各大计算机游戏引擎常用的一种较为现代的渲染策略,延迟渲染的出现最主要是为了解决了大量光源的光照计算,减少了片元着色器的计算量,使得渲染复杂的场景变得可能!原创 2021-01-22 19:05:09 · 3045 阅读 · 2 评论 -
图形学:用十五分钟带您推导模型,视图和投影变换矩阵
目录前言模型矩阵缩放旋转平移视图矩阵相机坐标系基底标架旋转标架平移投影矩阵正交投影透视投影前言明天考图形学了,推一下矩阵,顺便练下 Latex数学公式警告⚠模型矩阵模型矩阵负责将物体进行三个变换:平移,选择和缩放。此外,我们认为原坐标为 x,变换后则得到 x’ 坐标(接下来的变换都用该形式表示),即:x→x′x \rightarrow x'x→x′话不多说,开冲!缩放缩放矩阵非常简单,各个坐标直接乘以对应的缩放因子即可:S(sx,sy,sz)=[sx0000sy0000sz0原创 2021-01-07 23:09:14 · 1585 阅读 · 4 评论 -
OpenGL学习(十)天空盒
目录写在前面天空盒简介创建立方体贴图渲染一个立方体立方体贴图着色器开始绘制天空盒完整代码着色器c++写在前面上一篇博客回顾:OpenGL学习(九)阴影映射(shadowMapping)在昨天我们实现了非常简单的阴影映射特效,今天来更新立方体贴图的内容。这部分的内容相当简单,前提是要对 OpenGL 及其绘制过程有一个基本的理解。相信我,仅 10 分钟足够你完成一个立方体贴图,并且用于天空盒的渲染。天空盒简介注意到我们之前的代码都是利用:glClearColor(1.0, 1.0, 1.0, 1原创 2021-01-03 19:16:38 · 7577 阅读 · 5 评论 -
OpenGL学习(九)阴影映射(shadowMapping)
目录写在前面阴影映射原理简介写在前面今天是 2021 年的第一天,不管 2020 怎么说,都翻篇了,需要看向一个前方。新年快乐!书接上文:OpenGL学习(八)phong光照模型上次我们讲到通过 phong 光照模型进行简单光照特效的绘制。今天我们使用阴影映射技术,来进一步绘制阴影,使得场景的光照效果更加逼真。事实上,这是我第 n 次写这个内容了。。。第一次是:从零开始编写minecraft光影包(1)基础阴影绘制第二次是:深大计算机图形学大作业之虚拟场景建模第 3 到 n-1 次是帮别人原创 2021-01-02 21:50:09 · 4511 阅读 · 10 评论 -
深大计算机图形学大作业之虚拟场景建模
目录前言要求前言这次大作业算是做的比较认真的了,记录一下。全文几乎完全参考 Learn OpenGL 的教程,感谢大佬 Orz要求学生可以通过层级建模( 实验补充1和2)的方式建立多个虚拟物体,由多个虚拟物体组成一个虚拟场景,要求在程序中显示该虚拟场景,场景可以是室内或者室外场景;场景应包含地面。场景设计和显示添加纹理添加光照、材质、阴影效果用户交互实现视角切换完成对场景的任意角度浏览通过交互控制物体...原创 2020-12-23 14:23:38 · 11564 阅读 · 27 评论 -
OpenGL学习(八)phong光照模型
目录前言Model 类的小小改动phong 光照模型phong 光照简介环境光漫反射高光在着色器中实现 phong 光照完整代码c++着色器前言上一篇回顾:OpenGL学习(七)通过assimp库读取多种格式的模型在上一篇博客中,我们实现了最简单的网格对象 Mesh,并且从 assimp 库接收我们需要的信息,同时进行绘制。这意味着我们逐渐步入现代。今天我们要利用 phong 光照模型,实现对物体的光照效果的模拟,让场景更加真实。注:本篇博客代码基于上一篇博客:OpenGL学习(七)通过ass原创 2020-12-20 17:07:51 · 3228 阅读 · 9 评论 -
OpenGL学习(七)通过assimp库读取多种格式的模型
目录前言obj 模型读取问题assimp 库简介封装我们的网格对象网格对象的最小需求draw 的实现bindData 的实现封装模型对象load 函数的实现加载模型!完整代码c++着色器前言上一篇回顾:OpenGL学习(六)纹理与obj格式模型的读取好久没更新 OpenGL 系列了。这个月忙着搞图形学的大作业,发现需要用到读模型,而读取 obj 模型就很麻烦了,我是个终极懒狗,怎么可能会自己动手写模型解析器?于是直接下载别人写好的轮子来用了。顺便提一句题外话,最近搞图形学大作业踩了个坑。关于法线的原创 2020-12-20 00:59:44 · 7864 阅读 · 23 评论 -
OpenGL学习(六)纹理与obj格式模型的读取
目录前言纹理映射纹理坐标映射到简单正方形读取图像生成正方形数据生成纹理着色器贴纹理前言上一篇博客回顾:OpenGL学习(五)相机变换,透视投影与FPS相机在上一篇博客中,我们利用相机变换矩阵,对场景进行透视投影,同时我们实现了可以自由飞翔的 FPS 相机。迄今为止我们的渲染都是非常单调并且过时的,今天我们来引入一些现代化的东西,来丰富我们的场景。首先我们会利用一张图片生成纹理,随后我们将这张图片贴在我们的物体上。这就像现代计算机游戏中,我们可以让艺术家们人为的制定一些图片,而不是由程序员大费周章的原创 2020-12-09 14:53:28 · 12482 阅读 · 23 评论 -
OpenGL学习(五)相机变换,透视投影与FPS相机
文章目录前言坐标系转换简介模型坐标系世界坐标系相机坐标系ndc坐标系屏幕坐标小结坐标变换视图变换矩阵投影变换矩阵正交投影透视投影让相机动起来FPS相机欧拉角通过欧拉角计算cameraDirection完整代码c++着色器小结前言上一篇博客回顾:OpenGL学习(四)键鼠交互与OFF模型读取在上一篇博客中,我们学习了如何利用鼠标键盘进行交互。我们利用鼠标键盘来改变物体的模型变换矩形(model matrix)并且实时更新绘制。此外我们还学习了如何读取简单 OFF 格式的模型文件。至今为止我们都站在原地原创 2020-11-25 22:34:06 · 6092 阅读 · 7 评论 -
OpenGL学习(四)键鼠交互与OFF模型读取
目录前言freeglut所提供的交互准备工作鼠标交互调整旋转鼠标滚轮控制缩放键盘控制平移读取OFF文件完整代码c++着色器总结前言上篇博客:OpenGL学习(三)三维绘制与模型变换矩阵在上一篇博客中我们绘制了三维的立方体并且利用模型变换矩阵对立方体进行变换。在今天我们将会进行更加灵活的变换:用鼠标键盘来操控模型进行旋转缩放平移,此外,我们将通过阅读简单的OFF格式模型来获取更加生动的几何形状。⚠该部分的绘制代码基于上一篇博客:OpenGL学习(三)三维绘制与模型变换矩阵博客内容因为篇幅关系,不原创 2020-11-24 21:30:22 · 3260 阅读 · 7 评论 -
OpenGL学习(三)三维绘制与模型变换矩阵
目录前言绘制立方体模型变换矩阵齐次坐标通过矩阵进行变换平移变换矩阵旋转变换矩阵缩放变换矩阵变换的级联让立方体换个姿势构建模型变换矩阵向GPU传递模型变换矩阵在GPU中进行矩阵变换深度测试完整代码c++着色器小结前言上一篇回顾:OpenGL学习(二)渲染流水线与三角形绘制在上一篇博客中我们实现了二维平面上三角形的绘制,今天我们来绘制一个立方体,同时我们将会利用模型变换矩阵对立方体进行旋转,平移,缩放等操作,最后我们会通过阅读OFF格式的模型来读取更加复杂的三维模型。⚠该部分的绘制代码基于上一篇博客原创 2020-11-23 19:53:05 · 4977 阅读 · 4 评论 -
OpenGL学习(二)渲染流水线与三角形绘制
目录前言渲染流水线顶点与图元光栅化着色器渲染流水线小结向GPU传递数据vbovao开始绘制三角形使用GLuint进行对象引用加载着色器程序编写init函数着色器代码编写顶点着色器片元着色器编写display函数完整c++代码代码运行结果总结前言上一篇回顾:OpenGL学习(一) freeglut / GLEW 环境搭建与窗口创建在上一篇博客中我们实现了环境的配置,但是我们只创建了白色的窗口,并未绘制任何图形,于是今天我们来绘制最基本的图形 ---- 三角形。在开始之前,我们必须首先了解OpenGL的原创 2020-11-22 22:37:43 · 3312 阅读 · 8 评论 -
OpenGL学习(一) freeglut / GLEW 环境搭建与窗口创建
目录前言OpenGL是什么依赖的库GLEWfreeglutglm开发环境visual studiovcpkg小结之环境配置使用vcpkg安装c++库你好!窗口总结前言来开坑了。。。快进到挖坑不填怎么说呢?感觉学校教的图形学,有点囫囵吞枣的感觉,害得课后自己琢磨琢磨才能玩明白。还有一个原因是现在网上到处都是各种OpenGL的博客,但是大多都是引了一堆头文件,一顿操作,代码很多。过度的封装,导致我根本不知道其代码实现逻辑。前几天我想实现一个shadowmapping,都要查半天的资料,看一堆博客,导致原创 2020-11-22 00:51:07 · 4220 阅读 · 7 评论