![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OpenGL+QT
文章平均质量分 83
Elsa的迷弟
在珠海西山居、北京点点互动实习过。
目前在北京点点互动实习。
展开
-
QT With OpenGL(SSAO)(Screen-Space Ambient Occlusion)
当采样点像素深度(物体边缘)大于等于检测点深度(空心圈),说明该点未遮蔽了渲染点的环境光照,Occlusion遮蔽值增加。,需要将G_Buffer提供的位置深度信息统一为视口坐标下的位置深度信息。注:深度的范围不能局限在【0,1】,所以需要设置纹理数据类型为。不同,延迟渲染需要的信息为视口角度下物体的世界坐标信息。若渲染(0,0)像素点,随机转动核心纹理为(0,0)点。角度下看到的物体的视口坐标信息和深度,这与之前做。得到未遮蔽系数,再用1减去,得到遮蔽系数。)像素点,随机转动核心纹理为(原创 2023-05-09 22:25:03 · 908 阅读 · 3 评论 -
QT with OpenGL(IBL-镜面反射)
注意:开启该选项后,并不是对纹理做模糊,而是当指向像素边界时,会根据边界临近的纹理像素做插值。如果一个采样点覆盖率为16个像素,则应该在第2层mipmap上采样;mipmap每加1层,纹理大小就缩小一半,每四个像素合成一个像素。如果一个采样点覆盖率为4个像素,则应该在第1层mipmap上采样;指向立方体贴图,每个单位立体角向量指向的贴图像素数也是不同的。可以很大程度上改变效果,将更多的采样权值放在中心采样区。向量指向立方体贴图边角位置,该方向的像素数会偏多。,我们看到的边界结果才是纹理中真正存储的像素值。原创 2023-04-25 20:41:37 · 578 阅读 · 0 评论 -
IBL-镜面反射(LUT篇)
首先我们将镜面反射部分的积分分割为两个部分。Lopωo∫ΩLipωidωi∗∫Ωfrpωiωon⋅ωidωi的积分即为预滤波,将所有照到该像素点的光照求积分。∫ΩLipωidωi需要我们知道,这个半球的光线照过来之后,有多少反射到了ωi所在的方向。LUT求解的便是,在夹角cosθN⋅ωi,粗糙度为roughness下,BRD。原创 2023-04-25 13:43:10 · 311 阅读 · 0 评论 -
QT with OpenGL(IBL-漫反射辐照)
因为只引入了漫反射辐照,没有引入镜面反射,故只有Kd量有效。当物体金属度越高时,或越接近90度视角时,kd量越小。因此金属度越高,漫反射量越少,在图像中表现的越暗。横坐标粗糙度只对镜面反射的反射范围有关,与漫反射无关,故横坐标方向的7个圆形并无变化。原创 2023-03-29 17:31:27 · 397 阅读 · 0 评论 -
天空图立方体贴图转化为辐照度立方体贴图
可以看出,对于辐照度贴图的每一个纹理点,都需要大量的采样点计算。如果采样点过大,或渲染纹理点较多,则会导致程序运行结果变慢的结果。一般情况下,为了程序运行速度提高,采用直接载入辐照度贴图的方法来加快程序运行。原创 2023-03-29 14:36:06 · 205 阅读 · 0 评论 -
等距柱状投影图到立方体贴图的转化
在QT中使用QImage载入的图片只能载入.jpg.png等常用图片格式,无法载入辐射度HDR图片。因此使用std_image文件载入图片。原创 2023-03-28 20:30:37 · 643 阅读 · 3 评论 -
QT With OpenGL(延时着色法)(Deferred Shading)
延迟渲染一直被称赞的原因就是它能够渲染大量的光源而不消耗大量的性能。然而,延迟渲染它本身并不能支持非常大量的光源,因为我们仍然必须要对场景中每一个光源计算每一个片段的光照分量。frag去除光照部分。...原创 2022-08-13 21:23:41 · 567 阅读 · 0 评论 -
QT With OpenGL(泛光)(Bloom)
使用调用显式告知OpenGL渲染到多个颜色缓冲。3. 将HDR帧缓存渲染到屏幕,并可切换查看颜色缓冲1、2提取高光效果并没有想象中的好,按照直觉,应该只提取发光物的高光效果,但是环境中也出现了大量提取点。且,若背对光源(发光面不可见,但发光物体可见),则不会出现泛光现象,与想象中不同。高斯函数的这两个性质都给我们提供了优化的空间。引用GPU硬件加速,使用GPU双线性滤波器优化图解垂直过滤一次:红色色块的颜色为上下5个色块颜色的加权和使用代码(2)使用两个FBO注意再resizeGL原创 2022-08-06 22:45:31 · 529 阅读 · 0 评论 -
QT with OpenGL(Shadow Mapping)(面光源篇)
面光源与平行光源的生成大多相同,因此这里只说明面光源与平行光源的区别。关于平行光源的细节看这篇。原创 2022-08-02 21:21:45 · 558 阅读 · 0 评论 -
QT with OpenGL(HDR)
借鉴自 https://www.bilibili.com/read/cv11765941/一般来说,当存储在帧缓冲(Framebuffer)中时,亮度和颜色的值是默认被限制在0.0到1.0之间的。显示器被限制为只能显示值为0.0到1.0间的颜色,但是在光照方程中却没有这个限制。通过使片段的颜色超过1.0,我们有了一个更大的颜色范围,这也被称作HDR(High Dynamic Range, 高动态范围)。有了HDR,亮的东西可以变得非常亮,暗的东西可以变得非常暗,而且充满细节。HDR渲染允许用更大范围的颜色值转载 2022-08-02 12:11:37 · 693 阅读 · 0 评论 -
Games202,作业1(QT下实现PCSS)
但噪点在当前并不是一个很大的问题,因为在之后会接触时序降噪,空间降噪等,早申不会是很大的问题。由于我们的采样方式使用了矩形区域采样,因此当阴影重叠较大时,会出现如下情况。在PCSS中计算中,第一步计算平均遮挡物深度也需要用到低通采样。该shader只计算了平行光的阴影,对于点光源并未处理阴影。可以看出在脚附近的阴影为硬阴影,而头部附近的阴影为软阴影。当滤波为20时,当光线处于一定角度,地面出现黑色线条。该泊松采样方式如下,初始弧度为随机数,⚪半径为1.20x20采样数20(还好)20采样数(有噪点)....原创 2022-07-27 18:40:38 · 757 阅读 · 2 评论 -
QT with OpenGL(Shadow Mapping)(平行光篇)
glwidget.h在中,使用了,。但由于QT封装的类不支持深度贴图的导出(好像无法提取出深度贴图),因此需要使用纹理颜色来代表深度值。故不能使用,。若要使用,原创 2022-07-24 23:55:14 · 683 阅读 · 4 评论 -
QT With OpenGL(帧缓存篇)
在Qt环境下使用OpenGL帧缓存 QOpenGLFramebufferObject原创 2022-07-21 16:04:33 · 1898 阅读 · 2 评论 -
QT下assimp库的模型加载
一个非常流行的模型导入库是Assimp,它是OpenAssetImportLibrary(开放的资产导入库)的缩写。Assimp能够导入很多种不同的模型文件格式(并也能够导出部分的格式),它会将所有的模型数据加载至Assimp的通用数据结构中。当Assimp加载完模型之后,我们就能够从Assimp的数据结构中提取我们所需的所有数据了。由于Assimp的数据结构保持不变,不论导入的是什么种类的文件格式,它都能够将我们从这些不同的文件格式中抽象出来,用同一种方式访问我们需要的数据。...原创 2022-07-20 18:16:34 · 1414 阅读 · 0 评论 -
QT With OpenGL(Texture篇)
在中,加载纹理使用了std_image库,这个库,额~~~~,挺(nan)好(yi)用(yan)的(biao)。在Qt中,加载纹理可以使用内置库:或与等同或2.设置纹理属性3.纹理绑定到GPU4.纹理与shader中的sampler2D绑定5.析构别忘啦,因为是出来的。...............原创 2022-07-14 10:40:23 · 2394 阅读 · 0 评论 -
QT环境下配置Assimp库(MinGW编译器)
下载Cmake下载QT下载Assimp库注意这里下载5.1.0~5.1.6(不要下载5.2以上版本,编译不会通过),这里用5.1.6演示将scource code定位到下载好的,将build目录定位到同一目录下的或build64 中(build文件夹并不存在,输入即可)注:点击,弹出点击,选择,,打开QT安装目录(按照自己的目录来)在Tools目录下找到,来编译32位环境。在,来编译64位环境以32位为例:再次Configure,变白点击 Generate把Qt的根目录下.原创 2022-06-24 00:22:22 · 3437 阅读 · 20 评论 -
qt中QOpenGLTexture纹理使用
纹理类型的创建#include <QOpenGLTexture>QOpenGLTexture *m_texture, *v_texture;添加纹理图像 m_texture = new QOpenGLTexture(QImage("://container.jpg").mirrored()); v_texture = new QOpenGLTexture(QImage("://awesomeface.png").mirrored()); 配置纹理参数 m_te原创 2021-08-07 23:03:09 · 4269 阅读 · 5 评论 -
qt中对OpenGL函数的引入(shader,vao,vbo)
前言:本片使用vs2019编写代码,原因是qt creator中对资源的引入和删除较为麻烦,且今后主要还是要使用vs2019这种比较全面的编程软件较为长久。当然qt creator可以作为编程的辅助工具,在ui设计中更为方便,qt帮助文档也可以解决很多问题。QT代替原有的部分gl默认库在qt框架中使用OpenGL,即用qt窗口框架代替glfw窗口设计,用qt中的QOpenGLFunctions_4_5_Core(也可以为其他版本)代替glad来做OpenGL函数的管理。故在vs2019中不再需要对.原创 2021-08-02 13:55:46 · 2260 阅读 · 3 评论 -
qt中opengl窗口的创建
该笔记借鉴自 :“懂deeee珍惜”的 现代OpenGL+Qt学习笔记之二:程序框架"爱种鱼的猫"的 QT中使用OpenGL(0)——创建一个窗口引用引自qt帮助文档。1.创建qt工程创建主窗口,命名为mainwindow。2.创建OpenGL窗口(重点)在项目中添加c++文件 命名为OpenGLWidget注意:OpenGL窗口需要用c++类引入,不可用ui文件中现有的OpenGLWidget,原因是OpenGL窗口不仅继承自OpenGLWidget,还继承自QOpenGLF原创 2021-07-30 23:16:39 · 1137 阅读 · 0 评论