- 博客(241)
- 资源 (3)
- 问答 (1)
- 收藏
- 关注
原创 图像缩放算法及速度优化
The fastest production-ready image resize out there. Part 1. General optimizationsHow to accelerate image resizing without screwing up
2024-09-05 15:57:57 210
原创 Jekyll Github Pages push 报错
前后加上{% raw %} {% endraw %}发现markdown格式下的代码块不能有花括号。markdown格式下的代码块中有数组用花括号。
2024-08-19 13:51:52 434
原创 纹理映射学习笔记
本文的纹理映射将三维曲面与二维的纹理建立对应关系。xxstyystzzst即给定纹理坐标(s,t),我们能可以计算出曲面坐标(x,y,z)
2024-07-29 16:49:20 738
原创 opengl 写一个3D立方体——计算机图形学编程 第4章 管理3D图形数据 笔记
在OpenGL中,缓冲区被包含在顶点缓冲对象(Vertex Buffer Object,VBO)中,VBO在C++/OpenGL 应用程序中被声明和实例化。一个场景可能需要很多VBO,所以我们常常会在init()中生成并填充若干个VBO,以备程序需要时直接使用。当glDrawArrays()执行时,缓冲区中的数据开始流动,从缓冲区的开头开始,按顺序流过顶点着色器。每个缓冲区需要有在顶点着色器中声明的相应顶点属性变量。通常会把顶点数据在C++端放入。一个缓冲区,并把这个缓冲区和着色器中声明的顶点属性相关联。
2024-07-24 12:27:31 467
原创 opengl入门之环境配置
参考:https://blog.csdn.net/qq_15722993/article/details/120340567?使用Visual Studio 2019的NuGet功能获取类库, nupengl.core,然后链接OpenGL32.lib的依赖。经过对比检查后,发现关键是在创建GAO对象前,没有等待GLEW初始化完毕,因此造成了访问冲突。如果自己的程序用debug,那么上面生成的lib最好都是debug,可能会报错。上述安装完毕可能会报链接错误,可能是由于没有OpenGL32.lib的依赖。
2024-07-18 16:24:58 352
原创 OpenMesh入门,安装,运行示例Hello World
环境 win10,qt5源码下载编译进入OpenMesh官网OpenMesh官网 https://www.graphics.rwth-aachen.de/software/openmesh/download/使用cmake gui注意:先安装qt5使用 CMake-Gui 构建 vs 2019 项目第一次configure 会报错,需要你填写QT5_DIR,如上图然后再次点击configure接着点击 generate然后用vs2019打开项目,生成。
2024-07-16 15:11:09 761
原创 C++ 结构体内存对齐
最开始计算Cmd_t大小时 ,我以为是7bytes. 后来发现C++ 结构体在这里右4字节对齐。但是由于 将 pdata + 1 解释为 Cmd_t* 类型的指针,并将其赋给 data 成员。在实际使用中,看见前人的代码是,new 一块内存放两个结构体。我对内存大小有些疑惑。相当于 Cmd_tag.data 和 Cmd_t.ua公用一个字节的内存。一开始我以为,new一块内存存放她两需要 2+8 =10 bytes。结构体 Cmd_t 需要 8 bytes。结构体 tag_t需要2 bytes。
2024-05-15 10:53:49 369
原创 C++ bit级别的复制
好的,我可以帮你实现这个函数。这个函数的实现步骤如下:计算源字节和目标字节的起始位置,即和除以8的商。计算源字节和目标字节内的起始位的偏移量,即和除以8的余数。循环复制每一位,共复制numBits这个实现考虑了源位和目标位可能跨越字节边界的情况,通过位运算实现了位级别的复制。请注意,这个实现假设源位和目标位的范围是合法的,即不会越界访问内存。如果需要更严格的边界检查,可以在函数开头添加相应的断言或错误处理逻辑。
2024-04-19 09:52:16 584
原创 缩放算法优化步骤详解
在最里层的循环里面,每次都要计算 row / fYZoom 和 column / fXZoom,这个实际上可以挪出for循环,计算一次存到数组里。我们知道sse128可以一次性处理4个int类型,所以我们把最后一层for循环改成,4个坐标的算法,不满4个的单独计算。这个指令是使用1个i,来设置__m128i,将__m128i看做4个32位的部分,则每个部分都被赋为i;根据比例计算原图和缩放后图坐标的对应关系:缩放后图坐标*缩放比例 = 原图坐标。上面 一次处理四个坐标的代码要改成sse的代码。
2024-03-08 17:14:59 1639
原创 基于chatgpt的聊天机器人
以下是一个基于Python的示例代码,展示如何在本地环境中使用预训练的ChatGPT模型构建一个简单的聊天机器人应用程序。在这个示例中,我们将使用Hugging Face Transformers库加载GPT-2模型,并创建一个基于命令行的用户界面。步骤 1: 安装必要的库确保您已经安装了以下库:步骤 2: 编写代码。
2024-03-04 15:06:06 2094
原创 169. Majority Element
Given an array nums of size n, return the majority element.The majority element is the element that appears more than ⌊n / 2⌋ times. You may assume that the majority element always exists in the array.Example 1:Input: nums = [3,2,3]Output: 3Example 2:Inp
2024-02-04 15:07:22 1043
原创 leetcode 2446. Determine if Two Events Have Conflict
You are given two arrays of strings that represent two inclusive events that happened on the same day, event1 and event2, where:event1 = [startTime1, endTime1] andevent2 = [startTime2, endTime2].Event times are valid 24 hours format in the form of HH:MM.
2024-01-31 14:15:38 1255
原创 将本地项目通过git上传到仓库
在命令窗口中输入:git remote add origin 你的仓库地址。在【鼠标右击】弹出的菜单中,点击【Git Bash Here】在命令窗口中输入:git pull origin master。在命令窗口中输入:git push origin master。在 Gitee 中 我们刚刚新建的仓库里,去复制仓库的地址。在命令窗口中输入:git commit -m “提交项目”打开我们的项目,此时项目中是没有 .git 文件的。在命令窗口中输入:git add .在命令窗口中输入:git init。
2024-01-25 14:55:28 1036
原创 452. Minimum Number of Arrows to Burst Balloons
【代码】452. Minimum Number of Arrows to Burst Balloons。
2024-01-22 17:10:05 953
原创 leetcodev 435. Non-overlapping Intervals
【代码】leetcodev 435. Non-overlapping Intervals。
2024-01-22 16:53:15 664
原创 C++ 模板 Traits
运行结果很明显 当T为char类型是结果错误。打印累加过程看看:发现问题出在:char类型的取值范围是 -128 ~ +127,输出是: 127 -128 -127所以累加函数,当T为char类型时,T total{};代码的需要改成因为char类型的数据做累加的时候太容易超出取值范围,而产生数字溢出的错误了。
2024-01-19 15:03:47 576
原创 结构体内存泄漏,vs诊断工具
在排查问题时,你可以使用内存分析工具,例如Valgrind或Visual Studio的内存调试工具,来跟踪内存分配和释放的情况,以找出内存泄漏或异常分配的原因。在调试过程中,打开vs的诊断工具,发现大量std::_Container_proxy[] 的实例,定位到struct S代码。确保你对容器的使用是正确的,避免不必要的动态内存分配。这样的内存清零函数。相反,可以使用合适的初始化方式,或者直接调用对象的构造函数。对象是一个传入的引用参数,通常可以在调用函数时确保传入的对象是有效的,无需使用。
2024-01-17 16:52:08 1278
原创 Algorithms practice:leetcode 33. Search in Rotated Sorted Array
【代码】Algorithms practice:leetcode 33. Search in Rotated Sorted Array。
2023-12-29 18:00:11 1462 1
原创 google test : 测试已有项目(模板类)
项目结构如下:greenNoiseMask 是原有项目在解决方案中添加google test 项目:sample-test2。
2023-12-21 15:57:53 748
原创 Heap Sort Algorithm
要从上述给定的数组元素中建立最大堆,可以清楚地看到,上述形成的完整二叉树并不遵循堆属性。因此,我们的想法是按照自上而下的方法,将数组形成的完整二叉树按相反的层级顺序进行堆化。即首先堆化树中按层级顺序遍历的最后一个节点,然后堆化倒数第二个节点,以此类推。Last non-leaf node 最后一个非叶子节点。
2023-12-14 21:10:45 1270
原创 学习代码PerlinNoise
所以在这个例子中,模板参数URBG被std::random_device所赋值,std::random_device满足可调用、返回无符号整数的要求,所以可以成功实例化构造函数。这个模板的参数URBG必须是一个可调用的类型,调用后返回无符号整数,只有满足这两个条件,这个模板才能够正常实例化,否则实例化失败。这里对构造函数进行了实现,使用了模板参数声明中的条件来限制实现的条件。,它可以接受任意类型的迭代器和随机数引擎,并对指定范围内的元素进行洗牌操作。函数的作用是对指定范围内的元素进行洗牌操作。
2023-12-05 15:30:11 353
原创 C++: int转换成LPCSTR
在上面的代码中,sprintf函数可以将int类型转换为字符串类型,然后将字符串类型赋值给一个char类型的数组str。最后,将str指针转换为LPCSTR类型的指针lpcstr。当不想使用sprintf的方法时,可以使用C++标准库中的std::to_string函数将int类型转换为字符串类型,然后再将字符串类型转换为LPCSTR类型。在上面的代码中,std::to_string函数可以将int类型转换为字符串类型,然后使用c_str()方法将字符串类型转换为LPCSTR类型。
2023-11-21 14:08:05 1008
原创 缩放图片算法优化 sse
本来提取像素和设置像素都应该用sse写的,但是折磨了chatgpt好几天 也没有写出来。所以这里仅用sse优化 源数据以及目标数据坐标的计算。这里实现了打印文件的缩放算法。即使是这样优化效果也很好。
2023-11-16 16:29:55 912
C++ 代码 APP_GAME_MGR = 1 << 1 这么写的目的
2022-02-14
TA创建的收藏夹 TA关注的收藏夹
TA关注的人