自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

DXT的博客

Learning...All the blog posts are just study notes。My github: https://github.com/DXT00

转载 由highmap计算法向量

转自:Calculate Normals from Heightmap From vector calculus, the normal of a surface is given by thegradient operator: A height maph(x, y)is...

2020-05-14 14:38:26 33 0

转载 c++ std::vector 使用Erase–remove idiom删除特定的value

wiki: Erase–remove idiom 一般删除vector中的某个值,需要遍历整个vector找到该值的下标再erase. 采用erase-remove方式可以避免多次后续元素前移 These algorithms do not remove elements from the...

2020-05-08 12:16:26 68 0

原创 [BlackPearl引擎开发记录 6] --ImGui

完整代码:https://github.com/DXT00/LearnOpenGL_study/tree/1977d59c505868f63f718cb7d8d22c3f5176cd69 ImGui selectable 菜单: const char* entityItems[] = { ...

2019-10-30 17:04:03 187 0

原创 [BlackPearl引擎开发记录 4] ---dynamic_pointer_cast 必须是多态类才能转换

类之间必须具有多态属性:即至少含有一个虚函数(非析构虚函数)!! 错误例子: #include<iostream> #include<memory> #include<vector> #include<string> class Manager...

2019-10-29 16:57:54 35 0

原创 c++ learning -- template 泛型编程

参考书籍:effective c++ 条款43 面向对象编程:显示接口 + 运行时多态(哪一个virtual函数被绑定 - 发生在运行期) 泛型编程 :隐式接口 + 编译时多态 (哪一个重载函数被调用 - 发生在编译期) template注意点1: 子类不能顺利的调用模板化基类的函...

2019-10-25 11:12:30 49 0

原创 [BlackPearl引擎开发记录 3] -- 对象析构注意点

记录一下今天写的bug = =:析构顺序不正确导致abort()异常 (析构了栈上的变量,这个变量含有生命周期比他长的类的成员变量) 代码如下: class EntityTestLayer :public BlackPearl::Layer { public: EntityTestLay...

2019-10-24 16:05:21 65 0

原创 [BlackPearl引擎开发记录 2] Visual stidio 定位内存泄漏 --- 使用CTR library 定位内存泄漏

参考:https://docs.microsoft.com/en-us/visualstudio/debugger/finding-memory-leaks-using-the-crt-library?view=vs-2017 定位 new 分配的内存泄漏位置: 1.使用宏定义:输出内存泄漏的...

2019-10-24 12:28:11 64 0

原创 [BlackPearl引擎开发记录 1] error LNK2005---static 变量定义放在.h文件导致的!

注意:static变量的定义最好放在.cpp文件,而不是.h文件 否则会出现链接错误!static变量只初始化一次,如果多个类都包含这个含有static初始化的.h文件,就会出现重定义错误(error LNK2005)!! 比如: BaseComponent.h #pragma once...

2019-10-24 09:49:44 32 0

原创 c++ learning -- reinterpret_cast类型转换

参考:《More effective c++》条款2 reinterpret_cast 用于函数指针类型转换: 例子: 把 int dosonething()函数指针强制转换为 void (*FuncPtr) : #include <iostream> typedef ...

2019-10-16 19:36:32 15 0

转载 C/C 为什么static变量只初始化一次

转自:http://yuanyuanba.com/forum.php?mod=viewthread&tid=768 class F { public: int Famliy(int a) { static int famliy = a; std::cout << ...

2019-10-15 21:17:11 72 0

原创 [BlackPearl引擎开发记录 0]LearnOpenGL_study -- 游戏引擎编译与链接 ,添加ImGui

完整代码: https://github.com/DXT00/LearnOpenGL_study/tree/dda2e1477666b16cb0d7e3428f68303450103ff4 修改Project名字为BlackPearl --->static lib 作为游戏引擎 添...

2019-10-12 17:17:33 54 0

转载 OpenGL 纹理单元 纹理目标 理解 glActiveTexture glBindTexture

可以这样简单的理解为:显卡中有N个纹理单元(具体数目依赖你的显卡能力),每个纹理单元(GL_TEXTURE0、GL_TEXTURE1等)都有GL_TEXTURE_1D、GL_TEXTURE_2D等,如下 struct TextureUnit { GLuint targetTexture...

2019-09-29 11:07:46 201 0

转载 LearnOpenGL_study -- 平行光,点光源,聚光源

平行光只需要定义方向,不存在位置的问题,所有的物体都会接收到 点光源只需要定义位置,方向由点光源位置减去物体位置决定。注意:点光源存在衰减问题,漫反射,镜面反射,环境光三个分量都需要乘以衰减系数! 下面这个表格显示了模拟一个(大概)真实的,覆盖特定半径(距离)的光源时,这些项可能取的一些值。第...

2019-09-21 14:09:49 99 0

转载 LearnOpenGL_study -- 光照贴图

漫反射贴图 完整代码:https://github.com/DXT00/LearnOpenGL_study/tree/a9082da982458111eb505a22e92bcb4146bd8ee7 在着色器中使用漫反射贴图的方法和纹理教程中是完全一样的。但这次我们会将纹理储存为Materia...

2019-09-17 19:54:30 99 0

原创 LearnOpenGL_study -- Material

完整代码:https://github.com/DXT00/LearnOpenGL_study/tree/ed885b25fa4eee4c9e582b8d3c362bf4d6ac6c1d 参考:https://learnopengl-cn.github.io/02%20Lighting/03%2...

2019-09-16 16:56:43 35 0

转载 c++ learning -- 函数返回引用

1,当函数返回引用类型时,没有复制返回值。相反,返回的是对象本身。比如: const string &shorterString(const string &s1,const string &s2) { return s1.size < s2.size ...

2019-09-16 15:04:03 31 0

原创 c++ learning -- find_first_not_of , find_first_of,string::npos

例子: std::unordered_map<GLenum, std::string> OpenGLShader::PreProcess(const std::string& source) { std::unordered_map<GLenum, std::...

2019-09-16 14:27:38 52 0

转载 Haxel Engine learning 25 -- Shader Asset Files

Cherno Video:https://www.youtube.com/watch?v=8wFEzIYRZXg&list=PLlrATfBNZ98dC-V-N3m0Go4deliWHPFwT&index=45&t=7s Mycode :https://github.co...

2019-09-16 11:02:44 27 0

转载 Leetcode -- 842. Split Array into Fibonacci Sequence

842.Split Array into Fibonacci Sequence Medium 296102FavoriteShare Given a stringSof digits, such asS = "123456579", we can split it int...

2019-09-11 20:53:04 21 0

原创 c++11 -- Initializer_list

类初始化时的构造函数的搜索顺序: #include<initializer_list> #include<iostream> #include<string> class cat { public: cat(int age, std::string n...

2019-09-09 20:33:33 36 0

转载 OpenGL -- glfwSetWindowUserPointer()

UseglfwSetWindowUserPointer()to associate your wrapper pointer to the window before you register your callback. When your callback is called, you can...

2019-09-07 21:41:03 108 0

转载 c++ learning -- 引用类型作为成员变量

转自:https://blog.csdn.net/lazyq7/article/details/48186291 C++引用 引用在定义时必须初始化,否则编译时便会报错。如果类(自定义类型)的成员是引用类型,需要注意一些问题。 不能有默认构造函数,必须提供构造函数 凡是有引用类型的成员变量...

2019-09-07 16:28:51 96 0

原创 Linux -- 进程(二)-- 进程描述符 task_struct 和进程状态

参考:《Linux内核的设计与实现》 内核把进程的列表存放在叫做任务队列(task list)的双向循环链表中。链表中的每一项都是一个task_struct,即进程描述符的结构 task_struct中的数据能够完整描述一个正在执行的程序: 它打开的文件 进程的地址空间 进程的状态 ...

2019-09-05 20:50:35 196 0

转载 Haxel Engine learning 24 -- Shader Abstraction and Uniforms

Cherno视频:https://www.youtube.com/watch?v=d5wL6eZnWMU&list=PLlrATfBNZ98dC-V-N3m0Go4deliWHPFwT&index=40 完整代码:https://github.com/DXT00/Hazel_st...

2019-09-01 17:04:58 33 0

转载 shared_ptr的线程安全性

shared_ptr的线程安全性 shared_ptr的reference count是线程安全的,但是指向的对象不是线程安全的! 本文链接:https://blog.csdn.net/D_Guco/article/details/80155323 shared_ptr的出现...

2019-08-22 23:52:14 428 0

转载 c++左值引用 和 右值引用

#include<iostream> #include<string> #include<vector> using namespace std; class BoVector { public: BoVector(){} BoVector(const B...

2019-08-22 19:46:08 30 0

原创 判断一个数是否是2的整数次幂

2的整数次幂右 2,4,8,16,32.... 他们的二进制数可表示为: 2 0010 4 0100 8 1000 16 1,0000 32 10,0000 他们的二进制数减一可表示为: 2 0001 4 0011 8 ...

2019-08-21 13:59:56 248 0

原创 最小栈的实现

用一个栈存储数据 再用另外一个栈统计每次push后的最小值。 pop()时两个栈同时pop getMin()返回最小栈的栈顶元素 #include<stack> #include<algorithm> #include<vector> #inc...

2019-08-21 09:50:42 30 0

原创 c++ 左移右移越界情况

左移越界: 一个32位的long,值为1, 左移32位 = 1 左移33位= 2 ... 左移64位= 1 左移65位= 3 所以左移越界有点向循环左移,左移Index位--》相当于左移 Index%32位 ,当然%多少是根据变量类型来定的 int main() { long...

2019-08-20 17:13:13 198 0

转载 Linux 内核设计与实现笔记 -- 数据结构

转自:https://zhuanlan.zhihu.com/p/58087261 链表 这里很重要的一点:Linux是把链表节点嵌入到数据结构中,链表节点不含任何数据! Linux内核链表实现 单向链表和双向链表在实际使用中有一些局限性,如数据区必须是固定数据,而实际需求是多种多样的。...

2019-08-17 18:47:05 198 0

原创 Linux -- fork() 写时拷贝(copy-on-write)

参考:《Linux内核设计与实现》 Linux 的fork()使用写时拷贝页来实现! 写时拷贝:是一种推迟或者免除拷贝的技术。 内核fork()时并不复制整个进程地址空间,而是让父子进程共享一个地址空间---》只有在需要写入时,数据才会被复制,从而使各个进程拥有各自的拷贝数据。 也就是说,...

2019-08-17 10:34:00 186 0

转载 epoll,select,poll

https://blog.csdn.net/qq_35976351/article/details/85228002 man epoll 综述 首先要搞明白两个基本概念:I/O复用和(非)阻塞机制。 I/O复用指的是允许计算机执行或者阻塞在一组数据流上,直到某个到达唤醒阻塞的进...

2019-08-15 23:20:36 259 0

转载 Haxel Engine learning 23 --- Transform

Cherno 视频:https://www.youtube.com/watch?v=2k5FjtMNQsM&list=PLlrATfBNZ98dC-V-N3m0Go4deliWHPFwT&index=39 代码:https://github.com/DXT00/Hazel_stu...

2019-08-15 14:53:16 43 0

转载 游戏开发中的ECS模式

游戏开发中的ECS设计模式初探 转自:https://blog.csdn.net/yuliying/article/details/48625257 所谓的ECS模式全称就是Entity-Component-System模式。很早就听说过unity等引擎中广泛地使用了这样的模式,没有细查。今天...

2019-08-15 11:15:36 848 0

转载 Haxel Engine learning 22 --- time step

代码:https://github.com/DXT00/Hazel_study/tree/f064a34112e7d7d3fcc03ab9d2f089a2da663df8/Hazel 不同的机器帧率不同,如果没帧都走1单元的话,就会导致: 400帧每秒 的机器---> 走400单元 6...

2019-08-15 10:00:51 51 0

转载 Cherno c++ learning -- c++ performance

Cherno视频:https://www.youtube.com/watch?v=YG4jexlSAjc Timer 类计算运行时间 注意:这里的Timer类使用了RAII机制 #include<iostream> #include<memory> #include...

2019-08-14 21:03:33 73 0

转载 c++ RAII机制

转自以下两篇博文: https://blog.csdn.net/wozhengtao/article/details/52187484 https://blog.csdn.net/doc_sgl/article/details/43028009 RAII的本质内容是用对象代表资源,把管理资源...

2019-08-14 20:39:04 54 0

转载 Leetcode --- 684. Redundant Connection 判断是否有环 /并查集

684.Redundant Connection Medium 727196FavoriteShare In this problem, a tree is anundirectedgraph that is connected and has no cycles. The given i...

2019-08-14 19:29:58 98 0

转载 expected identifier before numeric constant错误

c++的类体中,方法以外的区域不允许有初始化,简单类型是可以的,但是有构造函数的复杂对象则不行了, 比如以下vector<int>v(1002,-1)初始化就会报错! ...

2019-08-14 19:07:48 476 0

原创 Leetcode -- 332. Reconstruct Itinerary --优先级队列 / 图的后序遍历

332.Reconstruct Itinerary Given a list of airline tickets represented by pairs of departure and arrival airports[from, to], reconstruct the itinerar...

2019-08-14 14:17:10 50 0

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