自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

know yourself

knowthyself.cn 三维、架构、语言

  • 博客(330)
  • 收藏
  • 关注

原创 Vulkan spec 中文版 翻译基础版本切换

断断续续两年时间里,还没有把Vulkan Spec翻译完成,眼瞧着标准都更新到1.2 版本,我这1.0 都还没有完成。真的是时间越来越少了,用来翻译的时间就更加零散了。之前翻译红宝书的时候,还能基本上做到每周晚上能有个五六个小时,周末有一天,现在是一个小时都很难找到。真的是年纪越大,时间就越快,时间越少。 现在版本的spec还剩下一小半,我不打算继续做下去了。 剩余的部分,我会基于 spec 1.2.146这个版本号翻译。还是希望有新的朋友加入翻译的队伍。虽然一些朋友能够直接阅读英文材料,...

2020-07-12 00:39:20 773

原创 Qt Designer UI 中的设计模式

Qt UI文件的实现原理很简单。但是,如果做过C#或者Android的经验,会觉得Qt的实现方式还是更加复杂一些的。Java/C#中实现这种功能的时候,并不需要转换为代码。而是由代码直接读取ui文件的文本,由文本内的信息直接构建ui对象。为什么Java/C# 可以做到,C++不行,这是为什么呢?原因很简单,因为C++没有“反射”这个语言特性。如果没有反射,就不能简单的实现从字符串构造对象。那么就没有办法不修改代码、只修改ui文件而实现修改程序ui的目的。 在Qt中,每个UI文件就是一个工具类...

2021-02-10 17:43:58 917

原创 新年第一篇

还是有一些朋友期待着我写一些分享的。2020年,于我而言,真的是非常特殊的一年。今年,全世界都被新冠的疫情所笼罩,大家都是小心翼翼的。我和老婆在20年新年之前,为了宝宝的安全,我们决定不回家了,之后突然就爆出了疫情。我们觉得非常幸运。如果回家了,在家里隔离,老婆正好在怀孕三个月,不能正常的接受产检,那么带来的后果可能是非常严重的。在杭州,还是能按时到妇保医院接受检查的。我们真是福星啊。 年中的时候,小宝宝出生了,年初由于公司第一优先级项目的进度原因,照顾宝宝妈妈的时间不够。宝宝妈妈一直在抱...

2021-01-23 00:46:24 397 3

翻译 Vulkan Specification(Vulkan规范):第十四章 14.6 内置变量

14.6. 内置变量带有BuiltIn修饰符修饰的变量是内置变量,可以在着色器内被访问。每个BuiltIn修饰的含义有如下几种: 此节的剩余部分,内置变量的名称与术语带有内置修饰符的变量等同。 内置变量中整数类型的可以被声明为有符号或者无符号整数。ClipDistanceDecorating a variable with theClipDistancebuilt-in decoration will make that variable contain the mechanism...

2020-07-12 00:48:36 670

翻译 Vulkan Specification(Vulkan规范):第十四章 14.4 片元着色器输入附件接口

当管线将要执行到片元阶段,片元着色器subpass输入与当前subpass的输入附件之间 形成了一个接口。 片元着色器subpass输入变量与输入附件之间通过InputAttachmentIndex修饰 匹配一致, 输入附件由VkSubpassDescription数据类型的数组name:pInputAttachments指定, 该数据结构描述了片元着色器执行时所在的subpass。带有UniformConstant描述类型,且带有被OpEntryPoint静态使用的一个OpEntryPoint的 ..

2020-07-12 00:45:19 301

翻译 Vulkan Specification(Vulkan规范):第十四章 14.3 片元输出接口

当管线中存在片元着色阶段,片元着色器输出与当前subpass的输出附件之间 形成了一个接口。 片元着色器输出变量通过Location和Component修饰,与颜色附件匹配, 颜色附件由VkSubpassDescription类型的数组指定, 该数据类型描述了片元着色器执行所在的subpass。通过Output存储类型修饰,被OpEntryPoint列举的 片元着色器输出变量 形成了 片元输出接口。 这些变量必须被不同的Location所修饰。 它们也可以被Component和Index联合唯...

2020-07-12 00:43:49 223

翻译 Vulkan Specification(Vulkan规范):第十四章 14.2 顶点输入接口

14.2. 顶点输入接口当管线有顶点阶段时,顶点着色器输入变量就顶点输入属性形成了一个接口, 顶点着色器输入变量通过Location和Component修饰符 来匹配 由VkGraphicsPipelineCreateInfo数据结构的成员pVertexInputState顶点输入属性。 带有Input存储class的修饰符 的OpEntryPoint列出的顶点着色器输入变量 形成了 顶点输入接口。 这些变量必须通过Location修饰符唯一确定,且可以通过Component修饰符唯一确定...

2020-07-12 00:43:04 202

翻译 Vulkan Specification(Vulkan规范):第十四章 14.1 着色器输入输出接口

14. 着色器接口当创建了一个管线,在对应的Vk*PipelineCreateInfo数据结构中指定的着色器集合被隐式的链接到一系列不同的接口。 着色器输入输出接口 顶点输入接口 片元输出接口 片元输入附件接口 着色器资源接口 接口定义使用下列SPIR-V 修饰符: DescriptorSet和Binding Location,Component, andIndex Flat,NoPerspective,Centr...

2020-07-12 00:42:26 270

翻译 Vulkan Specification(Vulkan规范):第十三章 13.1 描述符类型

13.1. 描述符类型如下几个小节简单讲解Vulkan支持的各种描述符类型。 每一小节定义了一种描述符类型,每一种类型在着色器语言和SPIR-V中都有详细讲解。 描述符类型和着色器语言中不透明类型的类别大多数情况下是一对一的,着色器语言中不透明类型必须指代 对应描述符类型的管线布局中的一个描述符。 但是,对于此规则,如下情形是一个例外Combined Image Sampler。13.1...

2020-03-22 14:22:58 1252

翻译 Vulkan Specification(Vulkan规范):第十三章 13 资源描述符

着色器通过使用特殊的着色器变量(通过API间接绑定到缓冲区或者图像视图)来访问缓冲区和图像资源。 这些变量被组织进入集合,每一个绑定的集合都通过API的一个描述符集合对象来表示,描述符集合只能被绑定一次。 一个描述符是一个不透明的数据类型,表示一个着色器资源,诸如缓冲区视图、图像视图、采样器或者被绑定的着色器资源。 每一个集合的内容由它自己的描述集合布局来决定,可以被管线内部的着色器资...

2020-03-22 14:21:23 271

翻译 Vulkan Specification(Vulkan规范):第十一章 11.7. 资源共享模式

11.7. 资源共享模式缓冲区和图像对象能以共享模式被创建,控制它们如何被队列访问。 受支持的共享模式如下:typedef enum VkSharingMode { VK_SHARING_MODE_EXCLUSIVE = 0, VK_SHARING_MODE_CONCURRENT = 1,} VkSharingMode; VK_SHARING_MODE_EXC...

2020-03-21 20:24:10 456

翻译 Vulkan Specification(Vulkan规范):第十二章 采样器

12. 采样器VkSampler对象代表着图像采样器的状态,图像采样器被Vulkan实现用来为着色器读取图像数据并进行过滤和其他变形操作。采样器通过VkSamplerhandle表示:VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSampler)可调用如下命令来创建采样器对象:VkResult vkCreateSampler( VkDe...

2020-03-01 23:46:18 525

翻译 Vulkan Specification(Vulkan规范):第十一章 11.8. 内存别名

11.8. 内存别名VkDeviceMemory内存的一段区间可以被称为aliased(被别名),若它通过vkBindImageMemory,vkBindBufferMemory,或者通过稀疏内存绑定,被同时绑定到多个资源上。 在两个图像或者两个缓冲区之间的 一段别名内存区间,其定义是:在绑定到两个资源上的内存的一段内存区间。 在两个资源之间(一个是缓冲区或者线性图像,另一个是优化图像)...

2020-03-01 23:45:13 478

翻译 Vulkan Specification(Vulkan规范):第十一章 11.6. 资源内存关联

11.6. 资源内存关联资源初始都是以_虚拟分配_ 的方式创建的,并不占内存。 设备内存被单独分配(参看设备内存),然后再和资源关联上。 这个关联操作对于稀疏、非稀疏资源来说是不同的。任何以稀疏标志创建资源都被认为是稀疏资源。 以这些标志之外的标志创建的资源被认为是非稀疏资源。 关于稀疏资源的内存关联在稀疏资源中有描述。在资源被当作参数传递到以下任何一个操作之前,非稀疏资源必须完全并...

2020-03-01 23:43:15 534

翻译 Vulkan Specification(Vulkan规范):第十一章 11.5. 图像视图

11.5. 图像视图图像对象不会被管线着色器直接读写访问。作为替代,图像视图,表示图像资源连续的一部分,带有附加的元信息,可用作上述目的。 视图必须以与图像兼容的类型来被创建,必须表示图像资源的一个有效子集合。图像视图通过VkImageView类型的handle表示:VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImageView)可以被创建的 图像视...

2020-03-01 23:42:22 766

翻译 Vulkan Specification(Vulkan规范):第十一章

11.4. 图像布局图像被存储在依赖于Vulkan实现的不透明内存布局。Vulkan实现能能支持多种不透明布局,某个给定时刻使用的布局由 图像子资源的VkImageLayout状态决定。 每一个布局都有限制条件,如使用该布局可对图像子资源做何种操作。 Applications have control over which layout each image subresource uses...

2020-03-01 23:41:15 496

翻译 Vulkan Specification(Vulkan规范):第十一章 11.3. 图像

11.3. 图像图像表示多维(最多3维)的数组数据,可用于各种目的(比如:附件,纹理),通过描述符集合把它们绑定到一个图形或者计算管线, 或者直接当作参数直接传递个某些命令。图像通过VkImage类型的handle表示:VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImage)可调用下列命令来创建图像:VkResult vkCreateImage(...

2020-03-01 23:39:32 747

翻译 Vulkan Specification(Vulkan规范):第十一章 11.2. 缓冲区视图

11.2. 缓冲区视图一个缓冲区视图代表 连续范围的一个缓冲区和用来解释数据的特定格式。 缓冲区视图被用来让着色器能访问按照某种格式解释的缓冲区内容。 为了创建一个有效的缓冲区视图,缓冲区必须已经被创建好了,且带有下面的至少一个使用方式标志位: VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT VK_BUFFER_USAGE_STORAGE_...

2020-03-01 23:38:19 323

翻译 Vulkan Specification(Vulkan规范):第十一章 11.1. 缓冲区

Vulkan支持两种主要的资源类型:缓冲区和图像。 资源是带有关联格式、维度信息的内存视图。 缓冲区是未格式化字节数组,图像包含格式化信息,可以是多维的,也能有关联的元数据。11.1. 缓冲区缓冲区表示线性数组数据,通过描述符集合或特定命令或直接指定它们作为特定命令的参数 绑定到图形或者计算管线被用于各种目的。缓冲区由VkBuffer类型handle表示:VK_DEFI...

2020-03-01 23:37:21 333

原创 关于一次疑似信息泄露事件的记录

先说事情。背景:这几天,公司要求开发组都针对产品功能思考一下发明专利的问题,我就在公司电脑上、手机上的浏览器 查询了一些资料。浏览器都没有登陆百度账号。否则,我第一个想法便是认为 百度出卖了我的隐私。我询问对方,他们也只是说从公司的AI数据库中拿到的数据,不知是那家公司把数据卖给了他们。我的手机上只有一张卡,新的电话卡,我好久之前就已经退出了小米账户,是准备刷国际版的。但是,我相信,给系统...

2019-12-12 21:19:38 418

翻译 Vulkan Specification(Vulkan规范):第十章 10.2.2 延迟内存分配

10.2.2. 延迟内存分配若从堆中分配的内存带有VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT标志位, 这个对象对应的内存可能被Vulkan实现延迟分配。 内存真实的提交大小初始的时候可能最小为0(也可能可要求的一样大),当更多的内存被使用时不断的增长。A memory type with this flag set is only allowed to...

2019-12-08 23:35:57 261

翻译 Vulkan Specification(Vulkan规范):第十章 10.2.1

10.2.1. CPU访问设备内存对象通过vkAllocateMemory创建的内存对象不能被CPU端直接访问。创建时带有VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT属性的内存对象被认为是可映射的。 内存对象必须是可映射的,才能被映射到CPU端。可调用如下命令可以获取指向映射到可映射内存对象的指针:VkResult vkMapMemory( ...

2019-12-08 23:35:13 542

翻译 Vulkan Specification(Vulkan规范):第十章 10.2 设备内存

设备内存是设备可见的内存,例如可以被设备原生访问的不透明图片的内容,或者常驻设备内存的统一缓冲区对象。物理设备的内存属性描述了内存堆和可用的内存类型。可调用如下命令来查询内存属性:void vkGetPhysicalDeviceMemoryProperties( VkPhysicalDevice physicalDevic...

2019-12-08 23:34:29 531

原创 Qt Core 模块

由于这个模块太基础了,我反而没有看到有文章详细的写过。感觉这不太应该啊。core模块由如下几方面组成: 元对象 属性系统 强大的signal/slot机制。 对象树 多线程 IO、Container、状态机 事件系统 元对象系统不得不提了,它是Qt 各种功能的基石。准确来说,若使用Qt元对象系统,那其实是在使用比C++ 更高...

2019-12-03 20:38:03 1182

原创 机器人应用开发

这三周(2018年11月)一直在做机器人手臂方面的调研工作。我负责三维显示与交互、机器人逆向动力学、碰撞检测等功能的demo搭建,另一位同事负责自动路径规划,硬件驱动交互等调研。调研过程中,我发现了机器人手臂这一个小的系统涉及到内容也是很有难度的,更不用说像Boston Dynamics 的机械狗那样复杂度的整体系统。真的非常佩服这个团队。我们主要调研一个商业的算法lib。也有开源的机器人...

2019-12-02 18:06:07 839 5

原创 C++ include 顺序

我不认同google style。我倾向于链接2 里面的的解释。我倾向的风格: local to global1. cpp 对应的h 文件2. 同一个模块的h 文件3. 其他模块的 h 文件(内部,或者外部,如Qt,Eigen)4. 系统级别的 C++ h 文件5. 系统级别的 C h 文件Google Style: global to local1. c...

2019-12-02 18:03:43 1099

翻译 Vulkan Specification(Vulkan规范):第十章 10.1 主机内存

Vulkan 内存分为两类:主机内存和设备内存。10.1. 主机内存主机内存是Vulkan实现需要的、设备不可见的内存。 这些内存可以用来存储软件内部数据。Vulkan给应用程序提供了代表Vulkan实现来操作主机内存分配的机会。 如果这个特征没有被使用,Vulkan实现将使用自己的内存分配函数。 因为大多数内存分配都不是在要求高性能代码区域的,这就不是一个提升性能的特征了。 ...

2019-12-01 00:08:46 303

翻译 Vulkan规范:第九章 9.8 管线的绑定

一旦管线被创建完成,可以使用一个命令把它绑定到命令缓冲区:void vkCmdBindPipeline( VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline...

2019-11-30 16:52:51 714

原创 如何创建个人微信公众号

前两年,身边的朋友以前托我做了一个CG行业的网站,配套的Android APP。因为是基于WordPress的修改,和开源的框架改写而成。虽然没有花费很多功夫,但是,后来发现网站和APP并没有带来很多流量与关注。之前我做移动端的同学也建议过,刚开始的时候,应该采用公众号的方式,只有用户很多,业务慢慢变得复杂之后,才需要独立的网站与APP。当时就应该听建议,把公众号做起来。亡羊补牢,这次还是打算...

2019-11-27 20:39:45 6448

翻译 Vulkan 术语(待完善)

本节定义的术语在本文档中通篇使用,可能全小写或者大写字母开头。Accessible (Descriptor Binding) [可访问性]若着色器阶段被包含在绑定描述符的stageFlags中,一个绑定描述符对于该着色器阶段可访问。使用该绑定的描述符只能在能够访问它们的阶段中使用。Acquire Operation (Resource) [获取操作(资源)]一个操作,其获取图像子资...

2019-11-25 23:55:57 863

原创 Qt GUI 模块

在core模块之上,就是最为重要的GUI模块了。Qt4中只有QtGui模块,UI相关的功能都封装在一起。Qt5中拆分为GUI、Widget两个模块。GUI模块提供桌面系统集成,事件处理,OpenGL/Vulkan,基础图像,字体等功能。通过链接1 可知,GUI模块的class 是相当少的。但是,它们却是Qt 界面技术的核心。我们甚至可以不使用Qt Widget 模块,也能做出来符合设计的UI功...

2019-11-23 23:31:50 2356

原创 QString 转 wchar_t*

这两天浪费了一点时间在编码转换上。我们使用到的一个算法库,接口参数是一个wchar_t*,作为文件路径。经过实验,几种方法都没有用,是个麻烦问题。记录一下。找到了下面三种可以工作的方式。方法1:file = filename.toStdWString();const wchar_t* str1 = file.c_str();Returns a std::wstring o...

2019-11-22 23:59:36 5026 3

原创 工业软件设计上一些简单的原则

做了一年多新的项目,好几个,有的是部分参与,有的相当于全程参与,有的好,有的坏,关于交互设计这一部分,我实在是要吐槽一下。公司要是没有UE,就请一个好的PM;要是没有足够经验的PM,那么,请尊重程序员的建议。学历固然重要,经验也很重要。主管者不想听,自然,下次别人也不会多说。公司要求每个人都为大局着想,基层员工倒是提意见了,结果把PM惹烦了,绩效都不好了。结果却是谁都不知道他是想为大局着想了,...

2019-11-20 21:05:03 874

原创 Qt View 中用多线程

在View层,我们不可避免的需要一些多线程的控制,但是,却又没有达到抽象出一个线程给程序全局使用的程度,这个线程仅仅只需要负责本view内部的操作,这个线程的生命周期一般短于view的生命周期。所以,我们需要一个简单的方式。这里主要涉及到如下几种需求:时间短,即使多算一遍、几遍也无所谓;时间很久,没必要完成前一次;时间不一定,但是需要排队;对于第一种需求,我们可以使用Fu...

2019-11-20 19:56:53 478

原创 OSG入门简介

Gitchat开通要先写一篇文章,我还没有想好完整的的教程目录。不过,肯定是三维方面的。后续的,想要开展一些桌面端、网站服务端架构介绍的专题。OpenGL与DX11/12的选择?我认为,最好还是学习一下OpenGL。对于想做游戏的开发者,那毫无疑问,应该去学习DX。 OSG与OGRE选择?我之前的文章没有提过,这里简单提一下。OSG比OGRE要简单多了,OSG仅仅是一个三维渲...

2019-11-16 10:15:12 969

原创 MIUI 11

2019-11-13 更新了最新的MIUI 11,使用了一会儿,真的是感觉。。。这次的产品经理是认真的吗?在设置里给一堆“在查找其他设置吗?”,我能反问一下,这是智障的做法吗?这种询问的意义何在?不会设置老人,就因为你问了,就知道如何设置了?会设置的年轻人,还需要先问一下,才知道应该到哪里去设置吗?简单才是正义。明确了,才能简单。这次的更新里,还是有很多有用、有趣的功能的。系统级的投屏...

2019-11-13 21:55:02 528 1

原创 工程师个人价值

2019-11-09 最近出了华为胡玲一档子事儿,在这个关键节点把华为再次推向的舆论风口。虽然,在互联网的圈子很关注这件事,但是,相信并不会有太多人会因为胡玲的言论而坚决抵制华为。似乎大家都心知肚明,华为给员工超量工作,给出市场上两三倍的回报,两个字:公平。反而,我觉得华为是一家很实诚的公司,任总都亲自说了,公司不是家,不搞虚的,打工就是做生意,钱货两清。不要有感情。像阿里、华为,因为给钱足...

2019-11-13 19:41:33 1172

原创 Qt 项目中的View、Controller

2019-11-05 我发现,一些Qt项目中,开发者因为Qt的框架提供了很好的解耦方式,便不再关注controller,把widget class 当作controller。这实在是不应该。在这样的代码基础上进行下去,就会发现所有的东西都逐渐放在了widget上。超大的cpp文件,ui、逻辑、数据库操作,混杂,不可直视。在这里,我们假设系统比较简单,MVC中Model包含了数据库访问(DAO...

2019-11-06 12:41:57 777

原创 软件授权与加密技术简单原理

2019-11-05 当前趋势下,互联网公司一般对外提供服务,而非直接出售软件,所以,大家不怎么关心软件授权、加密。但是,一些工业的软件拥有很核心的算法及技术专利。对外发布时,需要保护好程序。一般有如下要求:不能让未被授权的第三方未经授权而使用程序。不能让他人反编译程序,重现代码,推算出算法。对于第一个需求,就是需要实现授权。简单的授权方式有:1,license文件2,U...

2019-11-06 12:41:18 13233

原创 QImage与QPixmal视频播放

2019-11-05 新的项目中,需要从传感器实时获取图片并刷新显示,这边已有的代码里混用了QImage 与QPixmap。从QImage 转换为QPixmap 极为耗时,1000*1000 的size,debug模式下竟然需要12ms,CPU单核80%左右。导致UI很卡,这实在就过分了。我带有一些疑惑。其实,看一下定义就知道了。TheQPixmapclass is anoff-sc...

2019-11-06 12:40:45 983

空空如也

空空如也

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

TA关注的人

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