摘要: Assimp :全称为Open Asset Import Library,这是一个模型加载库,可以导入几十种不同格式的模型文件(同样也可以导出部分模型格式)。只要Assimp加载完了模型文件,我们就可以从Assimp上获取所有我们需要的模型数据。Assimp把不同的模型文件都转换为一个统一的数据结构 阅读全文
posted @ 2022-07-14 18:26 woden 阅读(2854) 评论(4) 推荐(1) 编辑
摘要: 基于OpenGL书《计算机图形学编程(使用OpenGL和C++)》中的描述,已经可以在屏幕上输出物体了。但是代码复用的比较多,所以要把复用的代码封装成类,方便后期的维护。先从原始代码中抽象出3个类:窗口类,相机类和控制器类。 窗口类 最开始的窗口代码 GLFWwindow* window = glf 阅读全文
posted @ 2022-07-13 19:28 woden 阅读(630) 评论(0) 推荐(1) 编辑
摘要: vs2022+resharper创建模板——实现在新建文件的时候自动生成防卫式声明和自定义语句 在网上找了很久如何让visual studio新建文件的时候自动生成注释和防卫式声明,虽然防卫式声明可以用#proga once替代,但是在clion里可以自动生成vs里面没法自动生成还是觉得难受,于是乎折腾了一下,顺便把新建文件时开头的注释也加上了。效果如下: ​ 新建头文件 ​ 新建类文件,会同 阅读全文
posted @ 2022-06-05 13:03 woden 阅读(1534) 评论(0) 推荐(2) 编辑
摘要: 单例模式 一个类不管创建多少次对象,永远只能得到该类型一个对象的实例 常见例子:日志模块,数据库模块 两种单例模式: 饿汉式单例模式:还没有获取实例对象,实例对象就已经产生了(是线程安全的) 懒汉式单例模式:唯一的实例对象直到第一次获取他的时候才产生。把对象的实例化延迟到第一次获取该实例对象的时候才 阅读全文
posted @ 2022-06-01 09:28 woden 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 这篇文章详细讲一下resharper C++在vs2022中的配置,让他拥有跟clion一样好用的代码补全功能。 为什么clion写代码体验很好好用为啥还要用vs呢,因为网上很多教程都是基于visual studio讲的,有些库用clion不好配置,所以只能再用vs。vs2022的代码补全功能实在太 阅读全文
posted @ 2022-05-31 13:44 woden 阅读(8091) 评论(0) 推荐(2) 编辑
摘要: 将Nginx中的内存池实现移植到c++,通过面向对象的方式实现 头文件: // // Created by 26685 on 2022-05-29 19:57. // Description:NginxMemoryPool.h // #ifndef MEMORYPOOL_NGINXMEMORYPOO 阅读全文
posted @ 2022-05-29 21:55 woden 阅读(414) 评论(0) 推荐(1) 编辑
摘要: C++STL中的空间配置器只有一种,是同过底层的malloc和free实现的,空间配置器中有四种方法: SGI STL中有两种空间配置器,一级allocator是与stl一致的malloc和free的方式,二级allocator是通过内存池的方式实现的。 SGI STL中的vector容器的模板中用 阅读全文
posted @ 2022-05-27 16:06 woden 阅读(415) 评论(0) 推荐(1) 编辑
摘要: 通过thread类编写C++多线程程序 线程内容: 1、如何创建启动一个线程? ​ std::thread定义一个线程对象,传入线程所需的线程函数和参数,线程自动开启 2、子线程如何结束? ​ 子线程函数运行完成,线程就结束了 3、主线程如何处理子线程 ​ t.join() : 等待t线程结束,当前 阅读全文
posted @ 2022-05-23 21:13 woden 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 转载自typedef介绍 本文介绍C语言中的关键字 typedef 的用法。 在C++11中用using替代typedef 1 概述 typedef 为C语言的关键字,作用是为一种数据类型定义一个新名字,这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。 ty 阅读全文
posted @ 2022-05-23 17:10 woden 阅读(658) 评论(0) 推荐(0) 编辑
摘要: 绑定器bind1st,bind2nd vector<int> vec; for(int i=0;i<20;i++){ vec.push_back(rand()%100); } showContainer(vec); sort(vec.begin(),vec.end(),greater<int>()) 阅读全文
posted @ 2022-05-23 15:16 woden 阅读(165) 评论(0) 推荐(0) 编辑