- 博客(37)
- 资源 (2)
- 收藏
- 关注
原创 Learn CUDA Programming第二章 scaling image例子报错 invalid argument
不过我的代码是由stb_image读取的,所以在读取图片后CPU传给GPU前它的数据就是上下翻转的,因此GPU做完Kernel运算后缩放的图片转存后的图片也是上下翻转的。于是我开始怀疑CUDA API是否随着版本更新有变化,毕竟作者完成这本书是用的CUDA 10.x开发环境,而我的CUDA版本已经是12.0了。一开始还怀疑是不是作者读pgm的接口有问题,换成呗被图形学验证过无数次的stb_image这个库后还是报这两句错。下载的例子在我的Ubuntu上运行会出现错误。发现已经不报错并且生成了缩放后的图片。
2024-03-18 22:12:27 361
原创 如何创建美观的邮件模板并通过qq邮箱的SMTP服务向用户发送
最近在写注册功能的自动发送邮箱告知验证码的功能,无奈根本没有学过前端,,只好借助网页设计自己想要的邮箱格式,最终效果如下:也推销一下自己的项目ShaderLab,可运行ShaderToy上的大部分着色器代码,有学图形学的伙伴们可以关注下,学前端的伙伴们有意向WebGL发展的也可以关注下:)近期开发进度及效果在这个。
2023-09-02 09:48:20 1186
原创 nmake编译Qt第三方库出现无法打开包含文件type_traits
(code completion)和函数提示(call tips),毕竟Notepad++是基于Scintilla的开源编辑器,并且提供QT的支持,功能肯定是比一些独立开发者开发的代码编辑器要强大的。最近需要为个人项目ShaderLab添加内嵌的代码编辑窗口功能,支持语法高亮和Intellisense,最初使用了QCodeEditor,发现这个第三方的库对词法分析的实现效果不太行.nmake编译时会搜寻用户变量下的INCLUDE文件夹作为包含头文件,LIB目录下的文件夹作为链接目录。
2023-08-01 09:55:53 1145
原创 Qt中postevent造成内存泄漏问题的通用解决方案
需要绘制OpenGL实时渲染的图像,由于OpenGL渲染基本都放在循环语句内,直接放在主线程会导致界面卡死不响应,所以考虑另开一个线程在后台渲染,再把渲染好的图像在循环语句内通过postevent发送给前端的Widget。结果是内存泄漏非常严重,QEvent不会自动释放,以一秒60帧来算,粗略估计就是一秒造成60张600x800图片大小的内存泄漏,非常恐怖!这里就要注意一点了,如果你自定义的QEvent类在构造的时候从堆内申请内存,一定要定义该Event的析构函数释放从堆内申请的内存!
2023-07-30 09:41:27 884
原创 OpenGL 保存渲染的结果为图片
对于案例,因为正好快要过生日的原因,打算从Shadertoy上参考渲染蛋糕的Shader移植到本地OpenGL,移植方法可以参考。常被用来导入OpenGL纹理图片,对于保存像素格式数据到BMP、JPEG、JPG等图片格式数据我们可以使用对应的。最后一个参数传入我们写入像素数据的区块首地址,必须预先用malloc分配合适的大小。,由于函数的实现都已经放在头文件中,只需要在包含头文件前确保宏。第五个参数指定了像素数据的格式,可以传入的值有。第六个指针指定了数据的类型,必须为以下值之一。
2023-07-27 04:17:10 674
原创 OpenGL绘制律动爱心
仔细观察这两个shader,发现iq大神只用了两个shadertoy内置的uniform输入变量,分别为iTime和iResolution,他们分别代表程序运行的时间和程序的像素大小,我们只需要在自己的shader中加入这两个变量并且在源文件中传递这两个变量的值给着色器就可以,当然fragCoord作为mainImage的输入只需要在顶点着色器中传递给片段着色器。把这款编译好的3D心型shader打包发送给你的女朋友,让她感受一下数学的浪漫吧~基本的使用VSCode编写C/C++代码的经验。
2023-07-20 13:44:35 437 2
原创 Qt实现Excel读写
QtXlsx 是 第三方的Qt库,为Qt程序提供读写Excel的接口。不单单是Microsoft Excel,它可以用于任何Qt支持的平台。相比Qt官方的QAxObject,QtXlsx提供的接口封装层次更高,使用更加简便。github主页为:https://github.com/dbzhang800/QtXlsxWriter在Qt中使用QtXlsx需要在 pro文件内添加QT += xlsx不过由于QtXlsx是非官方提供的库,QT += xlsx在不用nmake编译继承到Qt环境(Wind.
2022-04-25 11:33:06 3847 1
原创 QT添加MySQL驱动依赖
在该网站下载你所需要的mysql依赖驱动版本,比如我的QT版本是5.15就下5.15版的按照你的Qt编译版本和机器位数进行下载,比如我的机器是64位,编译环境是MSVC就下载qsqlmysql.dll_Qt_SQL_driver_5.15.2_MSVC2019_64-bit.zip下载完成后将下面的整块内容复制进入D:\Qt\5.15.2\msvc2019_64\plugins(依据Qt安装环境) 粘贴复制的文件这时候Mysql的驱动装好了,用代码测试QT现在支持的SQL驱动..
2022-02-17 16:24:23 1788
原创 解决UE4启动出现UE4Editor.exe-无法找到dll入口的弹窗
一开始遇到的问题如下:上网找问题得到的解答都是在cmd下利用regsvr32.exe注册该dll到注册表,但是也提示报错上网搜了一下,得知原因是生成该dll的源码没有实现DllRegisterServer和DllUnegisterServer函数供注册使用。然后陷入了沉思。。。往项目配置文件.build.cs里添加dll依赖会怎么样?试了一下,成功了。在.build.cs添加C#库using System.IO;在项目Class内添加如下代码: private s..
2021-11-06 16:17:05 4541
原创 VC数组定义分配空间过大造成的栈溢出问题
最近在做光线追踪需要定义一张1200×800的RGB图像于是想定义unsgined char[1200*800*3]来储存整个图像的数据,但是在VS中运行会报错:一次性分配了太多的栈空间,造成栈溢出了,这时候可以尝试用malloc分配空间...
2021-06-22 22:11:14 321
原创 Ray Tracing in One Weekend01无法查看ppm的问题及一个C++字符缓冲传参引发的bug
最近在学习光线追踪的经典教程<<Ray Tracing in One Weekend—The Book Series>>,在这个系列中作者的程序运行后生成ppm格式的图片无奈本地的图片查看器包括Photoshop都无法查看作者生成的PPM格式,令人疑惑的是在闫令琪大佬的GAMES101-现代计算机图形学课程中生成的ppm格式文件文件用Photoshop打开就完全没问题,比如说这张斯坦福兔的图片:无奈只好换一个方向,在Github上找到了将RGB/RGBA 格式的数据压缩为PNG格
2021-06-15 21:50:15 494 1
原创 四元数的意义及代码应用
四元数四元数的定义是[w(xyz)]=[cos(θ/2)(sin(θ/2)nxsin(θ/2)nzsin(θ/2)nz)][w\quad(x\quad y\quad z)]=[cos(\theta/2)\quad (sin(\theta/2)n_x\quad sin(\theta/2)n_z\quad sin(\theta/2)n_z)][w(xyz)]=[cos(θ/2)(sin(θ/2)nxsin(θ/2)nzsin(θ/2)nz)]四元数满足结合律但是不满足交换律:(ab)c=a(bc)a
2021-04-22 11:37:59 875
原创 Windows下配置glslangValidator实现命令行检查glsl语法
前言glslangValidator是OpenGL标准定制官方Khronos Group定制的GLSL参考编译器,命令行编译模式方便了用户直接测试glsl语法而绕过C/C++的相关依赖库编译,也不需要在主文件编写大量初始化代码。这在实际测试中能节省大量时间,在很多网站如shadertoy,用户编写的glsl代码能够直接在主函数内编译运行,这时候需要方便的语法检查,shadertoy网站也提供了简单的语法检查,然而glslang由于是标准定制官方定制的编译器,从而编译通过的glsl代码在各种支持GLSL语
2021-04-16 17:36:14 4171
原创 OpenGL等矩形贴图到立方体环境贴图变换技巧记录
这个网站详细介绍了整个加载过程包括代码,这里只对需要额外理解的细节做补充。等矩形贴图是将球体的贴图展开成正方形,一个例子如下所示:要变成的环境映射贴图的GLSL代码如下:#version 330 coreout vec4 FragColor;in vec3 localPos;uniform sampler2D equirectangularMap;const vec2 invAtan = vec2(0.1591, 0.3183);vec2 SampleSphericalMap(vec3
2021-04-10 16:51:29 572
原创 Windows下gethostbyaddr函数无法生效
gethostbyname函数的作用是通过一个IPv4的地址来获取主机信息,并存放在hostent结构体中先来一小段代码测试一下:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <winSock2.h>#pragma comment(lib, "ws2_32.lib")void ErrorHandling(char *message);int main(i
2021-02-10 10:37:42 577 1
原创 OpenGL画圆环
代码主要由Torus.hpp、Torus.cpp、Utils.hpp构成,通过加载纹理图片和着色器文件Torus_Texture_frag.glsl、Torus_Texture_vert.glsl实现画出一个甜甜圈的效果。主要用到的图形库有glew、glfw3、soil2、glm实现如下:Utils.hpp包含了加载纹理和glsl着色器文件的功能性程序#include <GL/glew.h>#include <GLFW/glfw3.h>#include "S
2020-12-18 12:09:12 1416
原创 C++从文件中读取glsl文件中读取着色器字符串代码时遇到的乱码问题
最近在读<<Computer Graphics Programming in OpenGL Using C++>>时,作者给出了一段从glsl文件读源码的程序,再动手做实验后发现了一点小关乎C++底层的stl::string底层实现机制在string到C字符串的小问题。源代码是这样写的,它包含在一整个cpp文件中:而我为了提高后续实验这段代码的复用性,则是将其写入了一个hpp文件,这时候就发生了转换错误:定义在ReadingGLSLfile.hpp中的pair类型中的
2020-11-14 11:03:53 1326
原创 C++实现桶排序(基于链表)
原理:桶排序是时间复杂度为线性的排序方法,它的实现主要基于指针数组构成的链表,算法把输入数组的元素按照值的大小等分为个区间第个区间的元素范围是到所以如果我们要将值为的元素放入桶中首先要确定桶的序号,根据上面的描述,桶的序号为,因为数组的编号从0开始,至n-1结束,因此C++实现的这部分代码为float gap = float(scope)/ build_num;int index = trunc((*(arr + i) - minimum - 1) / gap);其中*(arr+i)是
2020-10-29 21:49:54 784
原创 堆排序及最大优先队列(C++实现)
堆在本质实现上是一个数组,所有对堆的操作都是通过数组下标来实现的。但抽象来看,它可以被看成一颗近似的完全二叉树,树上的每一个节点对应数组中的一个元素。堆分为最大堆和最小堆,它们对树上的节点最初了要求:最大堆要求父节点的元素大小大于等于子节点的大小,而最小堆则相反。上述数组经过最大堆堆化后呈现如下的树状结构:为了访问父节点,和左右子节点,我们需要定义操作PARENT(i),LEFT(i),RIGHT(i)来根据二叉树的性质得到该节点的访问下标。在大多数计算机上,通过将i的值左移一位,LEFT过
2020-10-18 17:05:53 511
原创 VSCode配置OpenGL(MinGW+LLVM+freeglut)
OpenGL是跨平台的图形库,这意味着不管是Windows、Macintosh还是Linux下,由它编写的代码都能正确执行,OpenGL提供绘制图形的API,是进阶学习虚幻引擎的重要组成部分。VSCode配置OpenGL走过不少弯路,写成博客的方式记录一下配置步骤以免重新配置的时候又得到处找博客教程。以前我用的编译器是gcc,而现在改用clang,编译起来感觉clang更快,出错提示也更友好,如果你不想改用clang编译,那么就需要另找教程配置了。LLVM下载:https://releases.
2020-10-14 10:26:57 2838 4
原创 C/C++语言实现给定日期计算该日期与当前日期的相差天数
#include <stdio.h>#include <time.h>#include<math.h>#define TRUE 1#define FALSE 0size_t StringToDatetime(char *str){ time_t ocurtime; char buffer[80]; struct tm tm_; int year, month, day; sscanf(str,"%d-%d-%d", .
2020-09-29 19:02:16 1044 1
原创 C++迭代器作为参数传递进函数使用时的注意事项
外部函数对迭代器进行值传递而非引用 需要注意的一点是在使用迭代器作为传入参数进行迭代器运算操作的时候,作用对象仅仅是对传入迭代器的拷贝,因为在传入迭代器后函数直接对传入的对象进行拷贝操作而不访问源对象的内存空间https://blog.csdn.net/hp_truth/article/details/40189291 因此,如果在外部函数内进行迭代器操作将不会影响主函数内的迭代器对象:#include<...
2020-09-24 14:52:00 7267 5
原创 C++lambda表达式及bind函数总结
目录引入lambda值捕获使用捕获列表参数绑定标准库bind函数绑定check_size的sz参数以下是对阅读<<C++Primer (第5版)>>lambda阅读部分总结在实际的编程过程中,对于某些函数,我们希望对于传入的参数列表,其中某些参数是固定的值,而另外一个参数随着调用次数的增长而传入一个像STL容器一样的可迭代对象,对象的值随着*iterator值得不同而改变,每次调用该函数后会执行iterator++,并再次通过相同的传入参数调用该函数。
2020-09-16 23:38:27 784
原创 C++报错类型elemType classType::member is protected within this context的解决思路
C++报错类型elemType classType::member的解决思路问题背景在对象类尝试增加友元函数什么是友元函数?增加友元类问题背景在查看<<数据结构、算法与应用 C++描述>>的过程中遇到源码报错,源码报错比较多,这里主要分享一下解决报错类型elemType classType::member的解决思路。VS Code报错显示很清楚的告诉我们在头文件linkedWDigraph.h下的类linkedWDigraph块作用域内无法访问到类graphCha
2020-08-28 23:45:01 8408 2
原创 C++定义并使用自己的异常输出类
C++定义自己的异常输出类定义头文件功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入定义头文件在看**<<数据结构、算法与应用 C++语言描述>>** 的过程中下载了该书的源码,在源码里包含了作者设计
2020-08-27 16:36:27 851
原创 利用python一行代码搞定对字符串列表和整数列表做内积
需求是这样的,我有一个大陆省份的列表:region_list=['北京市','天津市','河北省','山西省','内蒙古自治区','辽宁省','吉林省','黑龙江省','上海市' ,'江苏省','浙江省','安徽省','福建省','江西省','山东省','河南省','湖北省','湖南省' ,'广东省','广西壮族自治区','海南省','重庆市','四川省','贵州省','云南省','西藏自治区','陕西省' ,'甘肃省','
2020-07-29 19:40:57 901
原创 解决安装Hadoop后cmd下使用命令“hadoop version “找不到或无法加载主类的问题
在安装hadoop时首先要确认Java以安装,并且在系统环境变量中为你的jdk设置路径。安装Java及配置jdk的过程就不详细解释了,Win+R打开cmd输入java -version如果出现错误说明上述过程存在问题,找教程解决就行了。下载好hadoop后,进入hadoop下载目录下的bin文件夹,在目录窗口输入cmd从而进入当前目录尝试输入hadoop version来检查hadoop是否可用,如果提示系统找不到指定的路径。则说明需要重新设置jdk的路径,进入到bin目录下的上级目录,
2020-07-21 15:09:20 21053 17
原创 Mysql基于编号设计的触发器
在做课程设计的时候,想到用编号来实现对交易信息的管理,所以在做数据库设计的时候也做了相应的设计,但在查询和定义触发器的时候也遇到了相应的困难,特别在此记录一下。现在我有三张表,分别是交易信息表、序列信息表和房屋信息表,这三个表的结构以及存储的数据分别如下:1、交易信息表,ID编号的结构为:辖区编号+房产编号+户编号2、序列信息表,数据库中的城市为杭州,数据是从链家找来的数据,编号是人为编的...
2020-07-14 12:11:55 232
原创 Mysql中group by和order by的区别
order by 从英文里理解就是行的排序方式,默认的为升序。 order by 后面必须列出排序的字段名,可以是多个字段名。group by 从英文里理解就是分组。必须有“聚合函数”来配合才能使用,使用时至少需要一个分组标志字段。我在数据库课程设计做了一个管理楼市的数据库,其中的两个表(交易信息表)和(客户信息表) 交易信息表 ...
2020-07-10 16:45:02 2242
原创 VSCode运行C程序时报错luanch:program does not exsist
重新要学一遍C语言,安装好VS Code后按照网上的配置过程成功运行了一遍C程序,但是第二天重新打开的时候就报错!检查了tasks.json、launch.json发现没有错误,仔细查看了一下是路径的问题,因为lanch中有program的声明而我是先打开json所在的路径再打开.c文件所在的路径,导致launch.json无法访问到workspaceRoot,这样的情况下应该直接选择打开文件夹选项,选择.c文件和json文件的上一级目录,我的在Cprogram下打开Cprogram
2020-06-30 10:06:51 15555 5
原创 networkx画带权有向网络
因为论文表述交通流的需要,因此我花了一个下午的时间琢磨该怎么用networkx画.先给出需要的import:import networkx as nximport numpy as npimport matplotlib.pyplot as pltimport matplotlib as mpl首先需要定义节点的坐标,这里采用numpy子代的random.norma...
2020-04-18 10:41:34 2386 2
原创 将word里的表格数据转化为Excel形式
a数学建模所给的统计数据往往和题目一同出现在word文件中,如CUMCM2009B这时候在建模的过程中需要提取其中的数据,尚且不清楚如何用matlab处理word数据的情况下需要先将附录数据转存成Excel形式。过程如下:1.先将附录数据外的文字部分删除,点击文件→另存为→选择目录箭头选择保存模式为单个网页2.打开Excel→打开→浏览→刚保存的网页接下来就可以用...
2020-02-14 10:54:24 869
原创 C#RSA密码以及利用欧几里得算法实现两数互质的判断
最近做课程设计,想到以前看过RSA密码的相关内容,于是就想用刚学的C#做一个数字加密系统。RSA加密的流程如下: 来看一个“玩具式”的例子:(1)选取两个素数p=2,q=11,于是N=22.(2)构造数,这是小于22且不含因数...
2019-12-21 11:57:42 789
原创 MySQL Workbench出现没有navigator的问题
试了好多次甚至重装,重装后文件和设置都没有变,上网找了很多资料没有帮助,操作一顿后原来只是视图模式的问题点击左显框navigator就出来了。
2019-11-04 18:13:25 1643
jarLib.rar
2020-07-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人