Windows权限服务控制启动服务停止服务Delivery Optimization
Windows权限服务控制Delivery Optimization OpenService failed. Error code: 1060. 指定的服务未安装,代码解决以上问题
使用openGL、glad、glfw、stb-image创建鼠标和键盘wsad控制窗口内的视口,并加载纹理
使用openGL、glad、glfw创建鼠标和键盘wsad控制窗口内的视口,并加载纹理,封装了openGL中的相机、矩阵变换、纹理处理,窗口键盘鼠标事件响应,参考learn openGL
QGraphicsItem、QGraphicsView、QGraphicsScene封装
QGraphicsItem、QGraphicsView、QGraphicsScene封装自定义
Qt QListWidget传入多张图片
Qt QListWidget传入多张图片,QListWidget样式设置,QListWidget是继承QListView,QListView是基于Model的,需要自己来建模(如建立QStringListModel,QSqlTableModel等),保存数据,这样就大大降低了数据冗余,提高了程序的效率,但是需要我们对数据建模有一定的了解,而QListWidget是一个升级版本的QListView,它已经为我们建立了一个数据存储模型QListWidgetItem,操作方便,直接调用addItem即可添加Item项。
Qt中QMap和QMultimap使用
QMap 是Qt的通用容器类之一。它存储(键,值) 对,并提供与键相关联的值的快速查找。其实就是一个键值对的集合,经常使用的。具体更详细还得看看帮助文档
QMap/QMultiMap属于关联式容器,其底层结构是通过二叉树实现,故其查找value的效率很快。QMap中的数据都是成对出现的,第一个称为key(键),第二个称value(键值)。
QT使用QListWidget显示多张图片
使用了QListWidget,QDockWidget
QListWidget类提供了一个基于项目的列表小部件
QListWidget是一个方便的类,它提供了一个列表视图,类似于QListView提供的列表视图,但是具有一个用于添加和删除项的经典基于项的接口。QListWidget使用一个内部模型来管理列表中的每个QListWidgetItem。要获得更灵活的列表视图小部件,请使用带有标准模型的QListView类。列表小部件的构造方法与其他小部件相同。QListWidget与QListView类似,都可以显示一列Item,区别在于前者可以往其中增删Item。
QListWidget确定可以同时选择列表中的多少项,以及是否可以创建复杂的项选择。这可以使用函数设置
Qt QDockWidget、QtreeWidget界面实现
Qt QDockWidget、QtreeWidget界面实现 ,QDockWidget提供了dock widget的概念,也称为工具面板或实用工具窗口
openCV加载jpg图片完整代码
openCV加载jpg图片完整代码,包含完整头文件、lib、dll无需安装和配置opencv就可以运行
QTreeWidgetItem的setData(int column,int role,QVariant& data)等,
Qt中QVariant是多种类型的联合,QVariant类中有个SetValue(T& value)方法,将自定义 T 类型的数据保存到QVariant对象中,可以理解为是自定义类型被封装成了QVariant的形式,这样,我们自定义的T类型的对象就能够通过所有参数和返回值为QVarian类型传递。比如QTableWidgetItem的setData(int column,QVariant& data)和QTreeWidgetItem的setData(int column,int role,QVariant& data)等,通过setData函数我们可以为每个单元格保存自己想绑定的数据及为每个树节点保存想绑定的自定义类型的数据。
但是,QVariant中的setValue方法的使用有个前提,就是我们自定义的类型要能被Qt所识别。那该怎样识别呢?
这就要用到宏定义Q_DECLARE_METATYPE了,通过这个宏定义可以将自定义的类型注册到Qt的元类型中,从而被Qt识别,通常在自定义类型定义之后使用。
QStackedWidget 控件使用详解
QStackedWidget 控件相当于一个容器,提供一个空间来存放一系列的控件,并且每次只能有一个控件是可见的,即被设置为当前的控件。QStackedWidget可用于创建类似于QTabWidget提供的用户界面。它是一个构建在QStackedLayout类之上的方便布局小部件。与QStackedLayout一样,QStacked Widget可以构建并填充许多子Widget(“页面”):
QTreeWidget类是一个方便的类,它提供了一个标准tree小部件与一个典型的基于项目所使用的接口类似QListView
QTreeWidget类是一个方便的类,它提供了一个标准tree小部件与一个典型的基于项目所使用的接口类似QListView Qt 3类。这个类是基于Qt的模型/视图的体系结构,使用一个默认的模型项目,每一个都是一个QTreeWidgetItem。 开发人员不需要模型/视图框架的灵活性可以使用这个类来创建简单的分层列表。更灵活的方法是结合QTreeView标准项目模型。这允许存储的数据是与它的表示分离。 在其最简单的形式,一个tree小部件可以构建在以下方式
QTreeWidget用法并解决中文乱码问题
QTreeWidgetItem
QTreeWidget用法并解决中文乱码问题
Qt中实现树形结构可以使用QTreeWidget类,QTreeWidgetItem,也可以使用QTreeView类,QTreeWidget继承自QTreeView类。
openSceneGraph3.5.1编译
osg3.5.1_windows_lib_dll_debug_release,openSceneGraph3.5.1编译
OpenSceneGraph3.5.1在windows10、visual studio2019编译的动态库和静态库
Movie To GIF 主要特点
将视频转换为动画 GIF
将 AVI,MPEG,MKV,MP4,WMV,MOV 和 RM 等
Movie To GIF 主要特点
将视频转换为动画 GIF
将 AVI,MPEG,MKV,MP4,WMV,MOV 和 RM 等视频文件转换为动画 GIF 文件,同时保持原始播放速率和分辨率。
调整
将输出图像文件的分辨率保持为原始分辨率,或根据需要设置新大小。
帧率
用户可以更改输出帧速率的值(每秒多少图片)来控制剪辑的速度。
颜色
用户可以选择 GIF 的颜色。
支持运行平台: NT/2000/XP/Vista/Win7/8/10
支持语言: English/German/Spanish/Italian/French/Chinese/Japanese
Movie to GIF 提供了在 GIF 文件中播放视频片段的选项。 您可以每秒设置更多帧,因此输出 GIF 显示为原始视频,或者为较小的动画GIF文件设置较少的帧数。 GIF 的宽度和高度也可调节。
Movie To GIF 许可证
免费软件
今天在windows7下安装qt-opensource-windows-x86-5.12.9报错:
gdb.exe -系统错误
今天在windows7下安装qt-opensource-windows-x86-5.12.9报错:
gdb.exe -系统错误
无法启动此程序,因为计算机中丢失api-ms-win-core-path-l1-1-0.dll。尝试重新安装该程序以解决此问题
ofstream,ifstream,fstream读写文件
在编程总经常会用到读写文件,基本都是使用ofstream,ifstream,fstream
QTreeWidget是实现树形结构的类,在很多软件中都可以看到类似树形结构的界面
QTreeWidget是实现树形结构的类,在很多软件中都可以看到类似树形结构的界面
1.QTreeWidget树上添加图片
2.QTreeWidget动态加载,双击书上每个子节点,树会自动添加子节点
vtk加载stl格式三维模型,完整代码包括所有的头文件,lib库和dll库
vtk加载stl格式三维模型,完整代码包括所有的头文件,lib库和dll库,解析STL文件
Qt不同类进行信号与槽建立,并传递参数
Qt不同类进行信号与槽建立,并传递参数,Qt不同类之间槽函数连接
Qt中使用QDomDocument和QDomnode来读取xml
Qt中使用QDomDocument和QDomnode来读取xml
内容简介:一.对QDomDocument和QDomnode的理解QDom前缀的都是代表节点类型。所以有,QDomElement代表一个Element节点,而QDomText代表一个Text节点。QDomNode类可以存储任意类型的节点。如果想进一步处理一个节点,首先必须把它转化为正确的数据类型。QDomNode调用toElement()以把它转化成QDomElement,然后调用tagName()来获得元素的标签名称。如果节点不是Element类型,那么toElement()函数就返回一个空QDomElement对
opengl实现骨骼动画,用到glaux,glut
opengl实现骨骼动画,用到glaux,glut,包含身体各个部分:头文小腿,大腿,自定义运动角度
osg(OpenSceneGraph)多窗口渲染
osg(OpenSceneGraph)多窗口渲染
在不同的窗口渲染不同的场景
osg(OpenSceneGraph)添加纹理
osg(OpenSceneGraph)添加纹理
OSG为模型添加纹理图片共分为两种方式,一种是自动方式,一种自定义顶点方式设置纹理坐标。
openGL曲面细分地形、高度图的细分
,在顶点着色器中执行高度贴图可能会遇到顶点数量不足以用来渲染所需的细
节的情况。现在我们有了生成大量顶点的方法,让我们回到Hastings-Trew 的月球表面纹理
贴图[HT16]并将其用作高度贴图,提升曲面细分顶点来生成月球表面细节。正如我们将看到
的,这具有一些优点,可以让顶点的几何形状更好地匹配月亮图像,并且提升轮廓(边缘)
细节。
opengl贝塞尔曲面细分,win7+VS017,win10+vs2019版本
opengl贝塞尔曲面细分,win7+VS017,win10+vs2019版本
现在让我们扩展我们的程序,使它将我们简单的矩形网格转换为贝塞尔曲面。细分网格
应该为我们提供了足够的顶点来对曲面进行采样(如果我们想要更多的话,我们可以增加
内部/外部细分级别)。我们现在需要的是通过管线发送控制点,然后使用这些控制点执行计
算以将细分网格转换为我们所需的贝塞尔曲面。
opengl贝塞尔曲面细分
现在让我们扩展我们的程序,使它将我们简单的矩形网格转换为贝塞尔曲面。细分网格
应该为我们提供了足够的顶点来对曲面进行采样(如果我们想要更多的话,我们可以增加
内部/外部细分级别)。我们现在需要的是通过管线发送控制点,然后使用这些控制点执行计
算以将细分网格转换为我们所需的贝塞尔曲面。
假设我们希望建立一个立方体贝塞尔曲面,我们将需要16 个控制点。我们可以通过VBO
从C++端发送它们,或者我们可以在顶点着色器中硬编码写死它们。
现在是更准确地解释曲面细分控制着色器(TCS)如何工作的好时机。与顶点着色器类
似,TCS 对每个传入顶点执行一次。另外,回想一下第2 章,OpenGL 提供了一个名为
gl_VertexID 的内置变量,它保存一个计数器,指示顶点着色器当前正在执行哪次调用。曲
面细分控制着色器中存在一个类似的内置变量gl_InvocationID。
曲面细分的一个强大功能是TCS(以及TES)着色器可以同时访问数组中的所有控制
点顶点。首先,当每个调用都可以访问所有顶点时,TCS 对每个顶点执行一次可能会让人
感到困惑。在每个TCS 调用中,冗余地在赋值语句中指定曲面细分级
OpenGL 对硬件曲面细分的支持,通过3 个管线阶段提供:
(1)曲面细分控制着色器;
(2)曲面细分器;
(3)曲面细分评估
OpenGL 对硬件曲面细分的支持,通过3 个管线阶段提供:
(1)曲面细分控制着色器;
(2)曲面细分器;
(3)曲面细分评估着色器。
(1)C++/OpenGL 应用程序:
创建一个摄像机和相关的MVP 矩阵,视图(v)和投影(p)矩阵确定摄像机朝向,模
型(m)矩阵可用于修改网格的位置和方向。
(2)顶点着色器:
在这个例子中基本上什么都不做,顶点将在曲面细分器中生成。
(3)曲面细分控制着色器:
指定曲面细分器要构建的网格。
(4)曲面细分评估着色器:
将MVP 矩阵应用于网格中的顶点。
(5)片段着色器:
只需为每个像素输出固定颜色。
曲面细分器生成由两个参数定义的顶点网格:内层级别和外层级别。在这种情况下,
内层级别为12,外层级别为6——网格的外边缘被分为6 段,而跨越内部的线被分为
12 段。
程序12.1 中的特别相关的新结构被高亮显示。让我们首先讨论第一部分——C++/
OpenGL 代码。
编译这两个新着色器,跟顶点和片段着色器完全相同。然后将它们附加到同一个渲染程
序,并且链接调用保持不变。唯一的新项目是用于指定要实例化的着色器类型的常量——新
常量如下:
G
openGL增强表面细节,模拟地球表面地形
1.openGL增强表面细节,模拟地球表面地形,使用高度贴图实现
2.现在我们扩展法线贴图的概念——从纹理图像用于扰动法向量到扰乱顶点位置本身。实
际上,以这种方式修改对象的几何体具有一定的优势,例如使表面特征沿着对象的边缘可
见,并使特征能够响应阴影贴图。我们将会看到,它还可以帮助构建地形。
3.一种实用的方法是使用纹理图像来存储高度值,然后使用该高度值来提升(或降低)顶
点位置。含有高度信息的图像称为高度图,使用高度图更改对象的顶点的方法称为高度贴
图①。高度图通常将高度信息编码为灰度颜色:(0,0,0)(黑色)=低高度,(1,1,1)(白色)=高高度。这样一来通过算法或使用“画图”程序就可以轻松创建高度图。图像的对比度越
高,其表示的高度变化越大
4.改变顶点位置是否有用取决于改变的模型。顶点操作可以在顶点着色器中轻松完成,当
模型顶点细节级别够高(例如在足够高精度的球体中)时,改变顶点高度的方法效果很好。
但是,当模型的顶点数量很少(例如立方体的角)时,渲染对象的表面需要依赖于光栅器
中的顶点插值来填充细节。当顶点着色器中可用于改变高度的顶点很少时,许多像素的高
度将无法从高度
openGL高度贴图,使用纹理图像来存储高度值,然后使用该高度值来提升(或降低)顶
点位置。
1.现在我们扩展法线贴图的概念——从纹理图像用于扰动法向量到扰乱顶点位置本身。实
际上,以这种方式修改对象的几何体具有一定的优势,例如使表面特征沿着对象的边缘可
见,并使特征能够响应阴影贴图。我们将会看到,它还可以帮助构建地形。
2.openGL高度贴图,使用纹理图像来存储高度值,然后使用该高度值来提升(或降低)顶
点位置。含有高度信息的图像称为高度图,使用高度图更改对象的顶点的方法称为高度贴
图
3. 高度图通常将高度信息编码为灰度颜色:(0,0,0)(黑色)=低高度,(1,1,1)(白色)=高高度。这样一来通过算法或使用“画图”程序就可以轻松创建高度图。图像的对比度越高,其表示的高度变化越大。
4.改变顶点位置是否有用取决于改变的模型。顶点操作可以在顶点着色器中轻松完成,当
模型顶点细节级别够高(例如在足够高精度的球体中)时,改变顶点高度的方法效果很好。但是,当模型的顶点数量很少(例如立方体的角)时,渲染对象的表面需要依赖于光栅器中的顶点插值来填充细节。
5.当顶点着色器中可用于改变高度的顶点很少时,许多像素的高
度将无法从高度图中检索,而需要由插值生成,从而导致表面细节较差。当然
openGL法线贴图混合纹理贴图以达到更好的物体表面细节
openGL法线贴图混合纹理贴图以达到更好的物体表面细节
1.凹凸贴图是使用数学公式产生物体表面凹凸特效
2.凹凸贴图的一种替代方法是使用查找表来替换法向量
3.一种使用查找表的常见方法叫作法线贴图。
4.法线贴图使用一个图像文件(称为法线贴图),该图像文件包含在光照下所期望表面外
观的法向量。
openGL法线贴图原理以及实现方法
1.凹凸贴图的一种替代方法是使用查找表来替换法向量。这样我们就可以在不依赖数学函
数的情况下,对凸起进行构造,例如月球上的陨石坑所对应的凸起。一种使用查找表的常
见方法叫作法线贴图。
2.为了理解法线贴图的工作原理,我们首先注意,向量通过3 字节存储,X、Y 和Z 分量
各占1 字节,就可以达到合理的精度。
3.这样,我们就可以将法向量存储在彩色图像文件中,
其中R、G 和B 分量分别对应于X、Y 和Z。图像中的RGB 值以字节存储,通常被解释为[0…1]
范围内的值,但是向量可以有正负值分量。如果我们将法向量分量限制在[−1…+1]范围内,
那么在图像文件中将法向量N 存储为像素的简单转换是:
openGL环境贴图,反射向量可用来直接访问纹理立方体贴图。当立方体
贴图用于上述功能时,称其为环境贴图
1.。这些物体在有小范围镜面高光的同时,还能够反射出周围
物体的镜像
2.反射向量可用来直接访问纹理立方体贴图。当立方体
贴图用于上述功能时,称其为环境贴图
1.实现凹凸表面相关的方法,通过使用光照效果
2.即使在实际对象模型表面平滑的情况下,也能使对象看起来具有逼真的表面纹理
1.实现凹凸表面相关的方法,通过使用光照效果
2.即使在实际对象模型表面平滑的情况下,也能使对象看起来具有逼真的表面纹理
3.将首先观察凹凸贴图和法线贴图
4.当直接为对象添加微小表面细节会使得计算代价过高时,它们可以
为场景中的对象增加相当程度的真实感
openGL天空盒实现
天空盒的概念非常巧妙而又简单:
(1)实例化一个立方体对象;
(2)将立方体的纹理设置为所需的环境;
(3)将立方体围绕相机放置。
openGL实现天空盒,使用OpenGL 立方体贴图
1.构建天空盒的另一种方法是使用OpenGL 纹理立方体贴图。OpenGL 立方体贴图比我们
在上一节中看到的简单方法稍微复杂一点。但是,使用OpenGL 立方体贴图有自己的优点,
例如减少接缝以及支持环境贴图。
2.OpenGL 纹理立方体贴图类似于稍后将要研究的3D 纹理,它们都使用3 个纹理坐标访
问——通常标记为(s, t, r)——而不是我们目前为止用到的两个。OpenGL 纹理立方体贴图
的另一个特性是,其中的图像以纹理图像的左上角(而不是通常的左下角)作为纹理坐标
(0, 0, 0),这通常是混乱产生的源头。
openGL绘制天空盒背景
1.openGL绘制天空盒背景
2.加入天空盒纹理
3.添加鼠标键盘事件
openGL软阴影,消除硬阴影,消除阴影中的锯齿,和伪影
1.openGL软阴影,消除硬阴影,消除阴影中的锯齿,和伪影
2.生成柔和阴影——百分比邻近滤波(PCF)
3.有多种方法可以用来模拟半影效果以在软件中生成柔和阴影。最简单也最常见的一种方
法叫作百分比邻近滤波(Percentage Closer Filtering,PCF)
4.在PCF 中,我们对单个点周围
的几个位置的阴影纹理进行采样,以估计附近位置在阴影中的百分比。
目前我们所展示的阴影生成方法都仅限于生成硬阴影,即带锐边的阴影。
1.目前我们所展示的阴影生成方法都仅限于生成硬阴影,即带锐边的阴影。
2.但是,现实世界中出现的大多数阴影都是柔和阴影。它们的边缘都会发生不同程度的模糊
3.柔和阴影的成因有很多,同时也有许多类型的柔和阴影。通常在自然界中产生柔和阴影
原因是,真实世界的光源很少是点光源——它们常常是区域光源。另一个原因是材料和表面
的缺陷积累,以及物体本身通过其自身的反射特性产生环境光的作用。
openGL阴影贴图
阴影贴图是用于投射阴影最实用也最流行的方法之一。
1.阴影贴图是用于投射阴影最实用也最流行的方法之一。虽然它并不总是像阴影体一样准
确(且通常伴随着讨厌的伪影),但阴影贴图实现起来更简单,可以在各种情况下使用,并
享有强大的硬件支持。
2.阴影贴图基于一个非常简明的想法:光线无法看到的任何东西都在阴影中。也就是说,
如果对象#1 阻挡光到达对象#2,等同于光不能“看到”对象#2。
openGL加载obj三维模型,并且在模型上添加光照
1.openGL加载obj三维模型,
2.并且在模型上添加光照
3.Blinn-Phong 着色