- 博客(20)
- 资源 (41)
- 收藏
- 关注
原创 GDB的Pretty Printer功能
做了多年的Windows平台开发,突然转到Linux开发,感觉非常的难受,我相信不仅仅是笔者,一般人都会觉得水土不服,毕竟Windows平台的Visual Studio实在是强大了,惯坏了大部分Windows开发人员。因此选一个强大的IDE对初始阶段的Linux开发还是很有好处的,可以帮助我们平稳过度到Linux。索性,Visual Studio还有一个小兄弟VSCode,一个轻量级的IED,各种方便的功能由插件提供,极大的方便了我们的开发。在此,以C++语言为例,笔者分享一点心得。装完VSCode之后,
2022-06-19 00:16:13
2477
1
原创 C++11实现的简单定时器
class SimpleTimer{public: SimpleTimer() { } ~SimpleTimer() { m_bStop = true; if (m_pThread) { m_pThread->join(); delete m_pThread; } } unsigned int Interval() const { return m_uiMsecInterval; } void Interval(unsigned int ui
2021-10-11 17:01:32
281
原创 ElasticSearch环境简单搭建
ElasticSearch环境简单搭建本文以7.10.2为例,其他版本应该也差不多。平台为windows,至于linux,配置应该是一样。至于下载,此处不作赘述。另外老版本的ElasticSearch安装包里面是不带JDK,需要自己安装JDK,但是从不知道从那个版本开始,已经自带JDK,所以解压即可使用。解压一个自己想放入的位置例如:D:\elasticsearch-7.10.2如果要启用用户名密码认证,则修改config目录下的elasticsearch.yml文件,再末尾添加如下配置:
2021-09-02 16:49:28
183
原创 OracleSpatial数据存储过程
OracleSpatial数据存储OracleSpatial空间数据类型如下:valueGeometry TypeDescriptionDL00UNKNOWN_GEOMETRYSpatial and Graph ignores this geometry.DL01POINTGeometry contains one point.DL02LINE or CURVEGeometry contains one line string that can contai
2021-08-31 10:12:37
331
原创 二次贝塞尔曲线转换为三次贝塞尔曲线
二次贝塞尔曲线转换为三次贝塞尔曲线在使用cairo绘图的时候,发现cairo不支持二次贝塞尔曲线的绘制,为了与QT实现的canvas的行为一致,cairo必须同样实现二次贝塞尔曲线的绘制。思路是将二次转换成三次,然后用3次的方式绘制。二次贝塞尔曲线公式Q(t) = Q0 (1-t)² + 2 Q1 (1-t) t + Q2 t²三次贝塞尔曲线公式Q(t) = Q0 (1-t)² + 2 Q1 (1-t) t + Q2 t²公式推导过程将二次贝塞尔曲线转换成三次贝塞尔曲线,必须要让这两个多项式相
2021-01-14 18:14:00
1426
原创 postgresql序列的使用
创建:方法1:直接在表中指定字段类型为serial 类型create table tbl_xulie (id serial, name text);方法2:先创建序列名称,然后在新建的表中列属性指定序列就可以了,该列需int 类型CREATE [ TEMPORARY | TEMP ] SEQUENCE name [ INCREMENT [ BY ] increment ] [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalu
2020-06-03 09:11:15
1035
原创 cairo裁剪使用分析
cairo_arc (cr, 128.0, 128.0, 76.8, 0, 2 * M_PI);cairo_clip (cr);cairo_new_path (cr); /* current path is not consumed by cairo_clip() */cairo_rectangle (cr, 0, 0, 256, 256);cairo_fill (cr);一步一步分析:1、cairo_arc其实只是在cairo_t里面.
2020-05-22 14:41:05
1265
原创 Vulkan Tutorial 9 描述符集合
在上一节定义了一个描述符集合布局,但是并没有实际创建。描述符集合用于告诉GPU,uniform buffer是如何映射到着色器程序的uniform变量。本节介绍描述符集合的创建和初始化。描述符池与明亮缓冲类似,描述符集合也是冲池里面创建的,所以必须先创建一个池。对于一个uniform buffer,只需要一个描述符集合,因此创建一个池非常简单:VkDescriptorPoolSize...
2019-01-29 17:54:54
397
原创 Vulkan Tutorial 8 管道布局
描述符集合布局与管道布局创建完Uniform Buffer后,接下来就是要告诉着色器如何使用。程序员知道Uniform Buffer里面存储的是MVP数据,以及MVP数据会被顶点着色器使用,但是Vulkan目前还不知道。这些都是通过描述符告诉Vulkan的。描述符与描述符集合描述符是一个特殊的不透明着色器变量,着色器使用它以间接的方式访问缓冲区和图像资源。描述符可以被看做是一个纸箱资源...
2019-01-14 16:28:03
458
原创 Vulkan Tutorial 7 创建Uniform Buffer
Uniform Buffer可以以只读方式访问着色器,以便着色器可以读取常量参数数据。在Vulkan里面,程序员必须自己创建Uniform Buffer,在其他API里面则不需要。设置Uniform数据程序可使用Uniform缓冲将MVP(Model-View-Projection)矩阵传入着色器,着色器通过MVP数据对每一个顶点进行变换。info.Projection = gl...
2019-01-09 16:55:08
725
原创 Vulkan Tutorial 6 创建深度缓冲
深度缓冲是可选的,如果要绘制3D图形,可使用深度缓冲。即使交换链以后多个图像,也只需要一个深度缓冲,因为深度缓冲在绘制交换链的每个图片时,深度缓冲是可重用的。与交换链不同,交换链是Vulkan创建内存,深度缓冲必须自己分配图片的内存来作为深度缓冲。步骤如下:创建深度缓冲图像对象 申请深度缓冲设备内存 将内存绑定到图像对象 创建深度缓冲图像视图创建深度缓冲图像对象创建深度...
2018-12-18 18:03:50
531
原创 Vulkan Tutorial 5 创建交换链
交换链是图片的列表。其中一个图片在前台显示,其他图片在后台。Vulkan的绘制会在后台图片上进行一些列的绘制操作,直到绘制完成,然后交换前台图片和绘制完成的后台图片。此时,当前后台图片成为前台图片,当前前台图片成为后台图片。交换链如下所示: Vulkan和视窗系统与其他图形API一样,Vulkan也将视窗系统与核心图形API分离。在Vulkan中,窗口系统...
2018-12-18 15:48:04
653
原创 Vulkan Tutorial 4 创建命令缓冲区
基本命令缓冲区操作OpenGL里面设置线宽的时候,是通过调用glLineWidth()。如下图所示,驱动程序将这个API调用转换为特定于GPU的指令,并且放入命令缓冲区。驱动程序负责管理这个缓冲区的创建和销毁,并且负责将命令缓冲发送给GPU去处理缓冲里面指令,应用程序不需要关心这些操作。在Vulkan里面,调用vkCmdSetLineWidth()来设置线宽。此函数实际上是新增一个指令到命...
2018-12-12 18:06:34
474
原创 Vulkan Tutorial 3 创建逻辑设备
Vulkan逻辑设备其实就对应一个相应的物理设备。逻辑设备用于向硬件设备发送绘制指令。因为我的电脑目前只有一个物理设备,同时为了简单起见,gpus指定第0个元素。设备队列和队列族Vulkan将设备队列暴露给外部,因此,程序员可知道目前哪些队列正在使用,哪些类型的队列正在被使用。这点跟其他图形api不一样。因此程序员可以更灵活的控制。队列是向硬件提交指令的抽象概念。Vulkan将...
2018-12-12 13:42:49
410
2
原创 Vulkan Tutorial 2 枚举物理设备
创建完Vulkan实例后,需要查找当前可用的硬件设备,其实就是GPU之类的一些图形设备。而一旦创建Vulkan实例,Vulkan就知道有些什么可用的设备。所以,可调用Vulkan的vkEnumeratePhysicalDevices获取设备。设备和Vulkan的关系类似以下方式: ...
2018-12-10 17:38:04
488
原创 Vulkan Tutorial 1 创建vulkan实例
在使用vulkan做任何操作之前,首先需要创建一个vulkan的vkInstance实例。下图为vulkan的基本架构:上图显示,应用程序被链接到一个称为Loader的vulkan库。Loader也会加载和初始化低级图形驱动程序。同样,layer也会通过Loader被加载到应用程序。Layer一般用来验证驱动程序执行的错误。正是因为vulkan将错误验证功能交给layer,所以vulk...
2018-12-07 18:06:19
863
原创 Vulkan Tutorial 0 vulkan学习笔记 写在前面
目前在一家公司走内核开发,整个内核框架涉及到数据的读取,空间变换,显示这些东西。最近突然萌生了一种想要给内核扩展一下显示能力集。目前市面上主要是OpenGL/DirectX/Vulkan。之所以选择Vulkan,主要是因为内核需要跨平台,因此DX被排除。OpenGL据说在多线程上有天生的缺陷,因此也被排除。所以,最终选择Vulkan。本来想买一个本书看看,但是目前市面上好像没有中文版的教程,能...
2018-12-07 15:48:34
520
原创 jpeg图片的exif信息
EXIF(Exchangeable Image File)是“可交换图像文件”的缩写,当中包含了专门为数码相机的照片而定制的元数据,可以记录数码照片的拍摄参数、缩略图及其他属性信息。exif其实是jpeg文件的一种,遵从jpeg标准,只是在文件头信息中增加了有关拍摄信息的内容和索引图。 JEPG文件头必须以0xFF 0xD8开头,0xFF 0xD9结尾。然后后
2017-02-27 15:47:46
3223
原创 H264帧内编码与帧间编码
晚上没事干,无聊,所以想写点什么。为了达到节约空间的目的,视频图像都是经过编码,然后用于各种不同的场合,特别是网络传输,因为带宽的限制,为了更好的传输数据,必须对视频进行压缩处理。而目前最流行的当属H264了。经过H264压缩的视频,可分为I、B、P三种不同的帧。其中I帧因为不参考其他帧,所以是帧内编码。P帧,要前向参考,而B帧,则要进行双向参考,这两种,都属于帧间编码。先说说帧内编码...
2017-02-13 19:14:50
14713
vulkan中文教程
2019-03-22
MongoDB权威指南第2版
2016-10-27
深入浅出数字信号处理 高清版
2016-10-13
深入理解C++11:C++11新特性解析与应用 高清目录
2016-07-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人