- 博客(85)
- 资源 (1)
- 收藏
- 关注
原创 opengles3.0_win10
前部分的配置主要参考:https://blog.youkuaiyun.com/mmy545237835/article/details/80762150但是还会出现一系列问题,需要把下载的模拟器文件夹中的:一个文件夹和两个动态链接库放到当前的工程目录下。如想要运行Hello_Triangle...
2019-05-07 14:58:54
497
原创 C++_多线程
一、基本概念说到多线程编程,那么就不得不提并行和并发,多线程是实现并发(并行)的一种手段。并行是指两个或多个独立的操作同时进行。注意这里是同时进行,区别于并发,在一个时间段内执行多个操作。在单核时代,多个线程是并发的,在一个时间段内轮流执行;在多核时代,多个线程可以实现真正的并行,在多核上真正独立的并行执行。例如现在常见的4核4线程可以并行4个线程;4核8线程则使用了超线程技术,把一个物理核模...
2019-04-23 20:11:34
362
1
转载 光线追踪(RayTracing)算法
1、Forward Tracing假设有一个每次只发射一个光子的光源,光子从光源发出并沿着直线路径行进,直至撞击到物体表面,忽略光子的吸收,该光子会以随机的方向反射。如果光子撞击到我们的眼睛表面,则我们会看到光子被反射的点。现在从计算机图形的角度来看待这种情况。首先,我们用像素组成的平面代替我们的眼睛。在这种情况下,发射的光子将撞击图形平面上许多像素的一个,并将该点的亮度增加到大于零的值。...
2019-04-22 18:14:20
13302
原创 C++_读写TXT文件
将信息写入txt文件string filename = "points_txt/frame_" + to_string(i + start_idx) + ".txt";ofstream fout(filename.c_str(), ios::trunc); // 将点的信息写入文件, 先将文件清空if (!fout) { cout << "文件打开失败" << ...
2019-04-22 17:21:41
323
原创 VS2017_扩大程序运行内存
一个win32(x86)程序的可用内存只有2GB,如果连接到/LARGEADDRESSAWARE,则可以申请到将近4GB内存vs2017中修改方法:在右侧解决方案资源管理器中,右击解决方案名称,单击属性,左侧链接器->系统,启用大地址改为是。...
2019-04-22 17:10:52
10525
转载 C++_单继承&多继承&菱形继承
https://blog.youkuaiyun.com/m0_37925202/article/details/78539667
2019-04-17 13:56:26
162
转载 TCP三次握手与四次挥手
一、三次握手1. 连接开始时,连接建立方(Client)发送SYN包,并包含了自己的初始序号a;2. 连接接受方(Server)收到SYN包以后会回复一个SYN包,其中包含了对上一个a包的回应信息ACK,回应的序号为下一个希望收到包的序号,即a+1,然后还包含了自己的初始序号b;3. 连接建立方(Client)收到回应的SYN包以后,回复一个ACK包做响应,其中包含了下一个希...
2019-04-16 09:36:58
181
转载 TCP与UDP
一、TCP面向连接的可靠传输。TCP充分实现了数据传输时各种控制功能,可以进行丢包的重发控制,还可以对次序乱掉的分包进行顺序控制。而这些在UDP中都没有。此外,TCP作为一种面向有连接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。TCP通过检验、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输。二、UDP无连接不可靠。UDP不提供复杂的控...
2019-04-15 20:53:25
200
转载 内核态与用户态
一、内核态与用户态概念当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核运行态(或简称为内核态)。此时处理器处于特权级最高的(0级)内核代码中执行。当进程处于内核态时,执行的内核代码会使用当前进程的内核栈。每个进程都有自己的内核栈。当进程在执行用户自己的代码时,则称其处于用户运行态(用户态)。二、区别 void testfork(){ if...
2019-04-15 20:48:58
273
原创 计算线段与平面的交点
//2.在三维空间中,求一个线段与三角形的交点struct Point{ float x; float y; float z; Point(float _x, float _y, float _z) : x(_x), y(_y), z(_z){}};struct segment{ Point a,b;};struct Triangle {...
2019-04-14 20:24:21
4216
转载 详解Github的.gitignore忽略文件
一、大家一定要养成在项目开始就创建.gitignore文件的习惯,否则一旦push,处理起来会非常麻烦。当然如果已经push了怎么办?当然也有解决方法,如下:有时候在项目开发过程中,突然心血来潮想把某些目录或文件加入忽略规则,按照上述方法定义后发现并未生效,原因是.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。...
2019-04-14 12:45:54
880
转载 C++_初始化列表
一、初始化列表定义构造函数除了有名字,参数列表和函数体之外,还可以有初始化列表,初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段。二、构造函数执行的两个阶段初始化阶段:所有类类型(class type)的成员都会在初始化阶段初始化,即使该成员没有出现在构造函数的初始化列表中。计算阶段:一般用于执行构造函数体内的赋值操作。三、为何使用初始化列表struct Test1...
2019-04-12 22:42:31
185
原创 进程间的通讯方式
1.共享存储器系统 1.基于共享数据结构的通信方式。(仅适用于传递相对少量的数据,通信效率低,属于低级通信) 2.基于共享存储区的通信方式2.管道通信系统 管道是指用于连接一个读进程和一个写进程以实现它们之间通信的一个共享文件(pipe文件)管道机制需要提供一下几点的协调能力: 1.互斥,即当一个进程正在对pipe执行读/写操作时,其它进程必须等待...
2019-04-12 22:06:07
217
原创 C++_智能指针
一、为何要使用智能指针1. 考虑下边的简单代码:int main(){ int *ptr = new int(0); return 0;}一不小心就忘了释放掉已不再使用的内存,从而导致资源泄漏(resoure leak,在这里也就是内存泄漏)。2. 考虑另一简单代码:int main(){ int *ptr = new int(0);...
2019-04-11 20:44:13
262
转载 死锁
一、死锁概念及产生原理概念:多个并发进程因争夺系统资源而产生相互等待的现象。原理:当一组进程中的每个进程都在等待某个事件发生,而只有这组进程中的其他进程才能触发该事件,这就称这组进程发生了死锁。 本质原因: 1)、系统资源有限。 2)、进程推进顺序不合理。二、死锁产生的4个必要条件 1、互斥:某种资源一次只允许一个进程访问,即该资...
2019-04-11 19:48:59
288
转载 静态链接库、动态链接库
一、库的介绍库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种:静态库(.a、.lib)和动态库(.so、.dll)。 windows上对应的是.lib .dll linux上对应的是.a .sog++ -c hello...
2019-04-10 22:05:44
313
转载 一个程序从源代码到可执行程序的过程
一个源程序到一个可执行程序的过程:预编译(.i, .ii(c++))、编译(.s)、汇编(.o)、链接。其中,编译是主要部分,其中又分为六个部分:词法分析、语法分析、语义分析、中间代码生成、目标代码生成和优化。链接中,分为静态链接和动态链接,本文主要是静态链接。一、预编译:主要处理源代码文件中的以“#”开头的预编译指令。1.删除所有的#define,展开所有的宏定义。2.处理所...
2019-04-10 21:13:48
2806
原创 C++_动态内存管理malloc/new、free/delete
一、相同两者都可以用来动态申请内存和释放内存;二、不同1.malloc/free是C/C++标准库的函数,new/delete是C++操作符。2.申请内存位置不同new操作符是从自由存储区上为对象动态分配内存空间的,malloc函数是从堆上动态分配内存。自由存储区是C++基于new操作符的一个抽象概念, 凡是通过new操作符进行内存申请的, 该内存称为自由存储区。 而自由存...
2019-04-10 10:50:42
306
原创 C++_内存分配
一、一个C/C++编译的程序占用内存分为以下几个部分:栈区(stack):由编译器自动分配与释放,存放为运行时函数分配的局部变量、函数参数、返回数据、返回地址等。其操作类似于数据结构中的栈。 堆区(heap):一般由程序员自动分配,如果程序员没有释放,程序结束时可能有OS回收。其分配类似于链表。 全局区(静态区static):存放全局变量、静态数据、常量。程序结束后由系统释放。全局区分为已...
2019-04-10 10:29:25
156
转载 Unity3D_脚本生命周期
脚本的生命周期,就是挂载到的游戏物体“从出生到死亡”,所经历的一些事件。这些生命周期事件,是一些特定的方法,且是由 Unity 引擎事先定义好的,在游戏的运行过程中,由引擎自动调用。1.Awake() ※唤醒事件,只执行一次。2.OnEnable()启用事件,只执行一次。当脚本组件被启用的时候执行一次。3.Start() ※开始事件,只执行一次。4.FixedUpdat...
2019-04-09 21:53:15
291
转载 C++_inline
1. 引入inline关键字的原因在c/c++中,为了解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题,特别的引入了inline修饰符,表示为内联函数。栈空间就是指放置程序的局部数据(也就是函数内数据)的内存空间。2. inline使用限制inline的使用是有所限制的,inline只适合涵数体内代码简单的涵数使用,不能包含复杂的结构控制语句例如while、switch,并且...
2019-04-09 19:35:53
147
原创 C++_static
1. static全局变量与普通的全局变量有什么区别 ? 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。 全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。 这两者的区别在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制...
2019-04-09 18:08:52
171
转载 STL_常见问题
一.STL提供哪六大组件? 1.容器:序列式容器:array、vector、heap、priority_queue、list、slist、deque、stack、queue 关联式容器:set、map、multiset、multimap、hashtable、hash_set、hash_map、hash_multiset、hash_multimap2.算...
2019-04-09 10:45:40
465
转载 STL_make_heap(), pop_heap(), push_heap()
make_heap()是生成一个堆,大顶堆或小顶堆make_heap(_RAIter,_RAIter) 默认生成大顶堆make_heap(_RAIter,_RAIter,_Compare) _Compare有两种参数,一种是greater(生成小顶堆),一种是less(生成大顶堆)push_heap()是向堆中插入一个元素,并且使堆的规则依然成立push_heap(_RAIter,_RA...
2019-04-08 18:08:58
461
转载 C++_4个与类型转换相关的关键字
static_cast,const_cast,reinterpret_cast,dynamic_caststatic_cast:特点:静态转换,在编译处理期间。应用场合:主要用于C++中内置的基本数据类型之间的转换,但是没有运行时类型的检测来保证转换的安全性。用于基类和子类之间的指针或引用之间的转换,这种转换把子类的指针或引用转换为基类表示是安全的;进行下行转换,把积累的指针或引用...
2019-04-01 17:18:25
244
原创 SSAO的思考
原理:对于铺屏四边形(Screen-filled Quad)上的每一个片段,我们都会根据周边深度值计算一个遮蔽因子(Occlusion Factor)。这个遮蔽因子之后会被用来减少或者抵消片段的环境光照分量。遮蔽因子是通过采集片段周围球型核心(Kernel)的多个深度样本,并和当前片段深度值对比而得到的。高于片段深度值样本的个数就是我们想要的遮蔽因子。SSAO的整体流程:渲染正常几何体,到...
2019-03-31 20:03:10
553
原创 KD tree
在处理点云数据时,由于数据量比较大,search操作往往非常耗时。因此引入kd-tree。1.定义Kd-Tree是从BST(Binary search tree)发展而来,是一种高维索引树形数据结构,常用于大规模高维数据密集的查找比对的使用场景中,主要是最近邻查找(Nearest Neighbor)以及近似最近邻查找(Approximate Nearest Neighbor)。在计算机视觉...
2019-03-11 15:52:34
362
转载 PPT无法打开,打开后总是修复的解决方法
单击需要打开的PPT文件,则会有如图的提示: 点击取消后,则不会打开。点击修复,则出现如下图示。 ps:也是打不开 此时,可以在桌面新建一个ppt文件(为了把ppt程序打开),然后依次单击 文件→选项,在弹出对话框中选择 信任中心,单击 信任中心设置。 在弹出的对话框中,单击受保护的视图,然后将 右侧的三个复选框的勾选都去掉,确定,确定。之后,...
2019-03-07 09:51:50
11880
1
原创 C++_Google命名规范
最近写C++代码较多,总是为文件、变量和函数等的命名犹豫不决,主要还是没有一个规范来约束。Google 的C++规范号称世界上最优秀的编码规范,于是拿来研究下,已改善自己以后的工作,今天只先学习下它的命名规范。1.文件命名规则文件名全部小写,可以含下划线或连字符,按项目约定命名,且尽量保证文件名明确。比如:cmd_save_player_info_class.cc my_use_full_...
2019-03-05 09:16:08
477
原创 PCL_win10_win64
目前仅仅配置成功了win64。(win32报了不明确的错误)1. PCL all in one 下载地址:http://unanancyowen.com/en/pcl181 本文下载的是:PCL 1.8.0 All-in-one Installer MSVC2015 Win642.安装 安装时选择好自己的安装路径,如本文用的是:D:\PCL 1.8.0。...
2019-03-04 21:59:38
319
原创 C++_模板
目录:函数模板 类模板 类模板与模板类1.函数模板:函数体相同函数都可以用函数模板,根据实参类型替换虚拟类型。int max(int a,int b){ return a>b?a:b;}char max(char a,char b){ return a>b?a:b;}#include <iostream>using nam...
2019-03-02 10:40:38
318
转载 C++_friend
https://blog.youkuaiyun.com/u012861978/article/details/52095607
2019-02-28 20:57:21
163
原创 C++_多态(虚函数)
C++的多态性用一句话概括就是:在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型来调用相应的函数。如果对象类型是派生类,就调用派生类的函数;如果对象类型是基类,就调用基类的函数 1:用virtual关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数。 2:存在虚函数的类都有一个一维的虚函数表叫做虚表,类的对象有一个指向虚表开始的虚指针。虚...
2019-02-23 09:12:15
254
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人