自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(155)
  • 收藏
  • 关注

原创 UE学习C++(1)创建actor

现在我们已创建C++类,将切换到Visual Studio并编辑代码。可以选择要扩展的现有类,将其功能添加到自己的类。,因为其是可在场景中放置的最基本对象类型,然后点击。中,找到默认情况下显示在窗口左侧的。菜单中,将Actor命名为。

2023-12-03 11:12:48 670

原创 C++ 反射宏

UFunction 是虚幻引擎(UE)反射系统可识别的C++函数。UObject或,方法是将UFUNCTION宏放在头文件中函数声明上方的行中。宏将支持更改虚幻引擎解译和使用函数的方式。可利用函数说明符将,以便开发者从蓝图资源调用或扩展UFunction,而无需更改C++代码。在类的默认属性中,从而能够执行一些操作(例如将操作与用户输入相关联)。这意味着当某个变量受网络更新影响时,用户可以将其用于接收通知并运行自定义代码。用户甚至可创建自己的控制台命令(通常也称debug或cheat code。

2023-12-02 10:01:10 1111

原创 Carla交通管理器

Traffic Manager(TM)是在模拟中以自动驾驶模式控制车辆的模块。它的目标是用真实的城市交通条件填充模拟。用户可以自定义一些行为,例如,设置特定的学习环境。Agent Lifecycle & State Management (ALSM):从Carla中获取车辆及行人信息,并保持更新。vehicle registry:管理Carla中车辆和行人的信息,包括由交通管理器控制的自动驾驶车辆和不受交通管理器控制的车辆(行人)组成。

2023-11-28 15:40:33 1095

原创 QT之QProcess

标准输出通道(stdout)提供常规控制台输出。标准错误通道(stderr)通常提供由进程打印的错误。这些通道代表两个单独的数据流,可以通过调⽤setReadChannel()函数在它们之间切换。当前读取通道上有可⽤数据时,QProcess发出readyRead()信号。当有新的标准输出数据可⽤时,它也会发出readyReadStandardOutput()信号,⽽当有新的标准错误数据可⽤时,它会发出readyReadStandardError()信号。

2023-11-20 15:52:57 521

原创 Qt 之元对象

我们可能已经接触到很多Qt中的属性了,比如qreal类型的opacity属性表示“透明度”,QRect类型的geometry表示“几何位置和大小”,QPoint类型的pos属性代表“位置”。所谓属性,也就是类中的一个数据成员,我们可以获取(get)和设置(set)。除了Qt中一些类已经具备的属性,我们还可以自定义属性,也就是定义一种访问数据成员的方式。不要被这个用法搞晕了,其实很简单,刚开始指定属性类型和名称,然后READ表示获取属性值的方法,一般这两点是必须的。其他都是可选的,比如WRITE。

2023-11-13 12:09:49 409

原创 配置属性文件QSetting使用

用户通常希望应用程序记住它的设置(窗口大小和位置,选项等)。这些信息通常存储在Windows的系统注册表中,以及macOS和iOS的属性列表文件中。在Unix系统上,由于缺乏标准,许多应用程序(包括KDE应用程序)使用INI文本文件、如果已经存在具有相同键的设置,则现有值将被新值覆盖。QSettings存储设置。每个设置都由一个指定设置名称(QSettings提供了静态函数对配置进行读取和设置。如果没有指定名称的设置,QSettings将返回空。(可以转换为整数0)。和一个存储与键关联的数据的。

2023-11-13 11:14:57 178

原创 GRPC学习

在gRPC中,元数据(metadata)是用于在gRPC。元数据是以键值对(key-value pairs)的形式组织的信息,。元数据在gRPC通信中非常重要,它可以用于各种用途,例如认证、授权、日志记录等。:这种类型的元数据与特定的gRPC调用相关联,包含了与该调用相关的信息。例如,客户端可以将认证令牌放入元数据中,以便服务器端进行身份验证。服务器端也可以在元数据中包含一些信息,以便客户端了解如何处理响应。在gRPC中,和ServerContext。客户端可以使用。

2023-11-10 23:37:33 813

原创 Qt数据库连接

本文实了数据库的增删除改查询功能。

2023-10-17 16:59:28 43

原创 Qtreeview改变当前节点的名称

可以使用QVariant::value()或qvariant_cast()模板函数,也就是说,没有。

2023-10-15 22:08:22 463

原创 Opengl之高级数据

使用共享布局时,GLSL是可以为了优化而对uniform变量的位置进行变动的,只要变量的顺序保持不变。因为我们无法知道每个uniform变量的偏移量,我们也就不知道如何准确地填充我们的Uniform缓冲了。我们能够使用像是。

2023-10-06 17:54:44 92

原创 Opengl之立方体贴图

简单来说,,每个2D纹理都组成了:一个有纹理的立方体。你可能会奇怪,这样一个立方体有什么用途呢?为什么要把6张纹理合并到一张纹理中,而不是直接使用6个单独的纹理呢?立方体贴图有一个非常有用的特性,它可以通过一个方向向量来进行。假设我们有一个1x1x1的单位立方体,方向向量的原点位于它的中心。

2023-10-06 15:46:39 698

原创 Opengl之帧缓冲

到目前为止,我们已经使用了很多屏幕缓冲了:用于写入。这些缓冲结合起来叫做帧缓冲(Framebuffer),它被储存在内存中。OpenGL允许我们定义我们自己的帧缓冲,也就是说我们能够定义我们自己的颜色缓冲,甚至是深度缓冲和模板缓冲。我们目前所做的所有操作都是在默认帧缓冲的渲染缓冲上进行的。默认的帧缓冲是在你创建窗口的时候生成和配置的(GLFW帮我们做了这些)。有了我们自己的帧缓冲,我们就能够有更多方式来渲染了。

2023-10-06 11:26:52 73

原创 Opengl之面剔除

尝试在脑子中想象一个3D立方体,数数你从任意方向最多能同时看到几个面。如果你的想象力不是过于丰富了,。你可以从任意位置和任意方向看向这个球体,但你永远不能看到3个以上的面。所以我们为什么要浪费时间绘制我们不能看见的那3个面呢?如果我们能够以某种方式丢弃这几个看不见的面,我们能省下超过50%的片段着色器执行数!如果我们想象任何一个闭合形状,它的每一个面都有两侧,每一侧要么用户,要么背对用户。如果我们能够只绘制观察者的面呢?这正是面剔除(Face Culling)所做的。

2023-09-30 15:07:17 94

原创 Opengl之混合

OpenGL中,。透明就是说一个物体(或者其中的一部分)不是纯色(Solid Color)的,它的颜色是物体本身的颜色和它背后其它物体的颜色的不同强度结合。一个有色玻璃窗是一个透明的物体,玻璃有它自己的颜色,但它最终的颜色还包含了玻璃之后所有物体的颜色。这也是混合这一名字的出处,我们混合(Blend)(不同物体的)多种颜色为一种颜色。所以透明度能让我们看穿物体。的(让所有的颜色穿过),或者是半透明的(它让颜色通过,同时也会显示自身的颜色)。。

2023-09-30 14:53:35 85

原创 Opengl之模板测试

当之后,,和深度测试一样,它也可能会丢弃片段。接下来,被保留的片段会进入深度测试,它可能会丢弃更多的片段。模板测试是根据又一个缓冲来进行的,它叫做我们可以在渲染的时候更新它来获得一些很有意思的效果。一个模板缓冲中,(通常)的。所以每个像素/片段一共能有256种不同的模板值。我们可以将这些模板值设置为我们想要的值,然后当某一个片段有某一个模板值的时候,我们就可以选择丢弃或是保留这个片段了。,之后在模板缓冲中使用1填充了一个空心矩形。场景中的片段将会只在片段的模板值为1的时候会被渲染(其它的都被丢弃了)。

2023-09-30 13:53:26 126

原创 Opengl之深度测试

即使之前绘制的片段本就应该渲染在最前面。因为我们是最后渲染地板的,它会覆盖所有的箱子片段。

2023-09-30 11:33:15 106

原创 Opengl模型加载

和箱子对象不同,我们不太能够对像是房子、汽车或者人形角色这样的复杂形状手工定义所有的。我们想要的是将这些模型(Model)(Import)到程序当中。模型通常都由3D艺术家在或者这样的工具中精心制作。这些所谓的3D建模工具(3D Modeling Tool)可以让艺术家创建复杂的形状,并使用一种叫做。这些工具将会在导出到模型文件的时候自动生成所有的顶点坐标、顶点法线以及纹理坐标。这样子艺术家们即使不了解图形技术细节的情况下,也能拥有一套强大的工具来构建高品质的模型了。

2023-09-30 10:56:08 61

原创 Opengl之多光源

GLSL中的函数和C函数很相似,,如果函数不是在main函数之前声明的,我们还必须在代码文件顶部声明一个原型。我们对每个光照类型都创建一个不同的函数:定向光、点光源和聚光当我们在场景中,通常使用以下方法:我们需要有一个单独的颜色向量代表片段的输出颜色。对于每一个光源,它对片段的贡献颜色将会加到片段的输出颜色向量上。所以场景中的每个光源都会计算它们各自对片段的影响,并结合为一个最终的输出颜色。实际的代码对每一种实现都可能不同,但大体的结构都是差不多的。

2023-09-29 19:46:25 134

原创 Opengl之抛光物

而不是位置向量来模拟一个定向光。着色器的计算基本保持不变,但这次我们将直接使用光的direction向量而不是通过position来计算lightDir向量。

2023-09-29 19:37:24 101

原创 OpenGL之光照贴图

我们需要拓展之前的系统,引入和贴图(Map)。这允许我们对物体的漫反射分量和镜面光分量有着更精确的控制。

2023-09-29 17:36:35 1245

原创 OpenGl材质

在上一节中,我们定义了一个物体和光的颜色,

2023-09-26 20:54:09 337

原创 Opengl之基础光照

现在我们已经把法向量从顶点着色器传到了片段着色器。可是,目前片段着色器里的计算都是在世界空间坐标中进行的。所以,我们是不是应该把法向量也转换为世界空间坐标?基本正确,但是这不是简单地把它乘以一个模型矩阵就能搞定的。首先,法向量只是一个方向向量,不能表达空间中的特定位置。同时,法向量没有齐次坐标(顶点位置中的w分量)。这意味着,位移不应该影响到法向量。

2023-09-26 20:37:43 83

原创 Opengl之颜色

现实世界中有无数种颜色,每一个物体都有它们自己的颜色。我们需要使用(有限的)数值来模拟真实世界中(无限)的颜色,的。然而我们仍能通过数值来表现出非常多的颜色,甚至你可能都不会注意到与现实的颜色有任何的差异。,它们通常被缩写为RGB。仅仅用这三个值就可以组合出任意一种颜色。例如,要获取一个我们在现实生活中,而是它所反射的(Reflected)颜色。换句话说,那些不能被物体所吸收(Absorb)的颜色(被拒绝的颜色)就是我们能够感知到的物体的颜色。

2023-09-26 09:17:10 141

原创 OpenGL之变换

它需要。

2023-09-23 21:20:58 85

原创 OpenGL之相机

OpenGL本身没有(Camera)的概念,但我们可以通过把场景中的所有物体往相反方向移动的方式来模拟出摄像机,产生一种在移动的感觉,而不是场景在移动。本节我们将会讨论如何在OpenGL中配置一个摄像机,并且将会讨论FPS风格的摄像机,让你能够在3D场景中自由移动。我们也会讨论键盘和鼠标输入,最终完成一个自定义的摄像机类。

2023-09-23 21:02:05 238

原创 OpenGL之坐标系统

为了将坐标从一个坐标系变换到另一个坐标系,我们需要用到几个变换矩阵,最重要的几个分别是模型(Model)、观察(View)、投影(Projection)三个矩阵。我们的顶点坐标起始于局部空间(Local Space),在这里它称为局部坐标(Local Coordinate),它在之后会变为世界坐标观察坐标裁剪坐标(Clip Coordinate),并最后以屏幕坐标(Screen Coordinate)的形式结束。局部坐标是对象相对于局部原点的坐标,也是物体起始的坐标。

2023-09-23 20:52:29 80

原创 OpengL之纹理

我们可以为每个顶点添加颜色来增加图形的细节,从而创建出有趣的图像。但是,如果想让图形看起来更真实,我们就必须有足够多的顶点,从而指定足够多的颜色。这将会产生很多额外开销,因为每个模型都会需求更多的顶点,每个顶点又需求一个颜色属性,当然也可以使用纹理(Texture)。纹理是一个2D图片(甚至也有1D和3D的纹理),它可以用来添加物体的细节;你可以想象纹理是一张绘有砖块的纸,无缝折叠贴合到你的3D的房子上,这样你的房子看起来就像有砖墙外表。为了能够把纹理映射(Map)到三角形上,我们需要指定三角形的。

2023-09-22 23:16:48 142

原创 OpenGL之着色器

这些小程序为图形渲染管线的某个特定部分而运行。从基本意义上来说,着色器只是一种把输入转化为输出的程序。着色器也是一种非常独立的程序,因为它们之间不能相互通信;它们之间唯一的沟通只有通过输入和输出。

2023-09-22 12:44:22 282

原创 Opengl绘制三角形

在OpenGL中,任何事物都在3D空间中,而屏幕和窗口却是2D像素数组,这导致OpenGL的大部分工作都是关于把。3D坐标转为2D坐标的处理过程是由OpenGL的图形渲染管线(Graphics Pipeline,大多译为管线,实际上指的是一堆原始图形数据途经一个输送管道,期间经过各种变化处理最终出现在屏幕的过程)管理的。图形渲染管线接受一组3D坐标,然后把它们转变为你屏幕上的有色2D像素输出。图形渲染管线可以被划分为几个阶段,每个阶段将会把前一个阶段的输出作为输入。

2023-09-22 00:07:53 264

原创 OpenGL之窗口的创建

2023-09-20 20:05:14 80

原创 OpenGL学习例子

opengl介绍

2023-09-14 15:47:33 91

原创 时间和日期

Boost的timer例子

2023-09-08 19:04:20 101

原创 C语言杂项学习之__VA_ARGS__

在C学习的过程的容易碰到#、##、__VA_ARGS__和##__VA_ARGS__的使用,针对这些内容进行对应的学习。

2023-08-07 19:17:29 359

原创 JavaScript学习(3)

w

2023-08-06 19:53:11 274 1

原创 JavaScript学习(2)

Cookie 是在您的计算机上存储在小的文本文件中的数据。当 web 服务器向浏览器发送网页后,连接被关闭,服务器会忘记用户的一切。当用户访问网页时,他的名字可以存储在 cookie 中。下次用户访问该页面时,cookie 会“记住”他的名字。

2023-08-06 13:54:45 169

原创 Javascript学习(1)

出于安全原因,本地类和宿主类不能作为基类,这样可以防止公用访问编译过的浏览器级的代码,因为这些代码可以被用于恶意攻击。

2023-08-06 00:10:05 176

原创 ffmpeg学习之音频解码数据

音频数据经过解码后会被保存为,pcm数据格式。而对应的处理流程如下所示。

2023-07-18 23:00:39 1551

原创 FFmpeg之音频重采样

为什么要重采样比如说语音识别,需要很低的采样率就可以了,高了增加了数据量,毫无用处,这时候就需要进行音频重采样,重采样可以改变音频采样值或采样格式。

2023-07-16 13:18:34 2151

原创 ffmpeg学习(印对应的文件信息,抽取音频文件信息)

抽取音频文件信息

2023-07-15 17:21:16 1265

原创 ffmpeg相关API(2)

【代码】ffmpeg相关API(2)

2023-07-15 15:58:38 1337

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除