自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(137)
  • 资源 (14)
  • 收藏
  • 关注

原创 OpenGL 原生库4 纹理

glfwInit() 初始化GLFW库,这是创建窗口和上下文所必需的第一步。glfwWindowHint 配置GLFW的上下文版本和配置选项。我们设置了OpenGL版本为3.3,并且使用核心模式。

2024-09-19 22:33:00 262

原创 OpenGL 原生库3 着色器

glfwInit() 初始化GLFW库,这是创建窗口和上下文所必需的第一步。glfwWindowHint 配置GLFW的上下文版本和配置选项。我们设置了OpenGL版本为3.3,并且使用核心模式。

2024-09-19 22:26:59 149

原创 OpenGL 原生库2 三角形

glfwInit() 初始化GLFW库,这是创建窗口和上下文所必需的第一步。glfwWindowHint 配置GLFW的上下文版本和配置选项。我们设置了OpenGL版本为3.3,并且使用核心模式。

2024-09-19 22:20:52 145

原创 OpenGL 原生库1 窗口

glfwInit() 初始化GLFW库,这是创建窗口和上下文所必需的第一步。glfwWindowHint 配置GLFW的上下文版本和配置选项。我们设置了OpenGL版本为3.3,并且使用核心模式。

2024-09-19 21:32:27 208

原创 双立方(三次)卷积插值

图像处理中有三种常用的插值算法:最邻近插值双线性插值双立方(三次卷积)插值其中效果最好的是双立方(三次卷积)插值,本文介绍它的原理以及使用如果想先看效果和源码,可以拉到最底部本文的契机是某次基于canvas做图像处理时,发现canvas自带的缩放功能不尽人意,于是重温了下几种图像插值算法,并整理出来。

2024-09-19 20:52:17 542

原创 OpenGL 着色器类的源码

编写、编译、管理着色器是件麻烦事。在着色器主题的最后,我们会写一个类来让我们的生活轻松一点,它可以从硬盘读取着色器,然后编译并链接它们,并对它们进行错误检测,这就变得很好用了。这也会让你了解该如何封装目前所学的知识到一个抽象对象中。我们会把着色器类全部放在在头文件里,主要是为了学习用途,当然也方便移植。

2024-09-18 09:53:41 167

原创 着色器 简介

Shaders: 暂未校对在 Hello Triangle 教程中提到,着色器(Shader)是运行在 GPU 上的小程序。这些小程序为图形渲染管线的某个特定部分而运行。从基本意义上来说,着色器只是一种把输入转化为输出的程序。着色器也是一种非常独立的程序,因为它们之间不能相互通信;它们之间唯一的沟通只有通过输入和输出。前面的教程里我们简要地触及了一点着色器的皮毛,并了解了如何恰当地使用它们。现在我们会用一种更加广泛的形式详细解释着色器,特别是 OpenGL 着色器语言(GLSL)。

2024-09-18 08:56:14 913

原创 创建两个着色器程序

在这篇博客中,我们将创建两个着色器程序,其中一个将输出橙色,另一个将输出黄色。然后,我们将绘制两个三角形,分别使用这两个不同的着色器程序。创建两个着色器程序,第二个程序使用一个不同的片段着色器,输出黄色;再次绘制这两个三角形,让其中一个输出为黄色。以下是实现代码,包括必要的注释,以帮助你理解每一步。

2024-09-18 08:39:01 238

原创 创建相同的两个三角形,但对它们的数据使用不同的VAO和VBO

在这篇博客中,我们将学习如何使用 OpenGL 绘制两个相连的三角形。我们将创建顶点数据,设置 不同的VAO 和 VBO,并使用 glDrawArrays 渲染两个三角形。以下是实现代码,包括必要的注释,以帮助你理解每一步。

2024-09-18 08:35:52 236

原创 使用glDrawArrays,尝试绘制两个彼此相连的三角形

【代码】使用glDrawArrays,尝试绘制两个彼此相连的三角形。

2024-09-18 08:32:36 161

原创 AT32F415的OTA升级

在物联网应用开发过程中,不可避免的会需要用到软件升级,一般情况下,以AT32系列芯片为主控制器的设备在出厂时就已经使用J-Link仿真器将应用代码烧录了,如果在设备使用过程中需要进行应用代码的更换、升级等操作的话,则可能需要将设备返回原厂并拆解出来再使用J-Link重新烧录代码,这就增加了很多不必要的麻烦。站在公司的角度来说,就是能远程来更换设备里边的代码程序。IAP却能很好的解决掉这个难题。

2024-09-08 10:10:31 809

原创 在长字符串中提取IP地址

(\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})将匹配任何四个数字序列,并用点号分隔它们。然后,它使用regex_search循环遍历输入字符串,并使用变量matches来存储关于匹配项的信息。对于每个匹配项,它将IP地址提取为match字符串,并调用is_valid_ip_address函数来验证它是否有效。最后,is_valid_ip_address函数使用另一个正则表达式来验证IP地址的格式。如果它与模式匹配,将返回true,否则将返回false。

2023-09-04 13:12:42 398

原创 linux进程间的7种通信方式全解析及代码示例

管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。

2023-09-04 11:47:29 2353

原创 arm开发板 GDB远程调试方法

1.在linux下开发,免不了使用gdb调试,但是linux下开发嵌入式,都是跑在ARM板子上的,网上有很多GDB的基础教程,但是能在ARM开发板用的时候,会有各种问题。比如:*.cpp: No such file or directory.这是因为用gcc编译的时候,代码还是在本地,并没有在arm平台上来。所以说还是有必要出一个arm端使用gdb教程。

2023-08-18 15:09:33 1788 2

原创 arm海思启动udev的错误

这样就能写出很多可能非常有用的实用程序,而它已经很好了,普通用户就可以写出脚本去做一些事情,比如当某个硬盘驱动器插入时,执行某个任务。当你理解了 udev 的工作原理,你就可以用它去做各种事情,比如当一个游戏手柄连接后加载一个指定的驱动程序,或者当你用于备份的驱动器连接后,自动执行备份工作。该错误通常出现在系统启动时,当 udev 守护程序启动时,如果系统没有足够的随机数种子,就会出现该错误。随机数种子用于创建随机数,在 Linux 中,随机数种子是通过读取 /dev/urandom 设备文件来获取的。

2023-07-04 16:00:49 1918

原创 linux从alsa驱动框架中读取pcm数据源代码

二是plughw:0,0;(设备自适应接口,编程者不必关心硬件,如果软件层设置的参数与硬件支持参数不一致则ALSA会自动转换数据区匹配;0:0表示设备号和次设备号subdevice)(对于硬件参数软件必须设置一致)不知道设备号的可以用arecord -l命令获取。具体的步骤,我在下面的代码的注释写的很清楚了.三是default:0;ALSA编程细节分析。四是default。

2023-06-25 15:34:50 649

原创 64位hi3531d编译QT5.15.10源码

###1.修改qt库的qmake.conf配置文件,在qt源码解压后的qtbase/mkspesc文件夹下,我的是linux-aarch64-gnu-g++,如果是32位的arm开发板,一般是linux-arm-gnueabi-g++。1.工具链一般随开发板提供,我的交叉编译工具链是aarch64-himix200-linux.tar.gz。将编译好的demo和Qt_arm5.15.10/lib上传到开发板,运行。###1.安装交叉编译工具链。路径下能看编译好的qt库了。###4.QT库交叉编译。

2023-06-14 16:19:38 1543

原创 海思编译安装ntp服务端

由于工作需求,需要在海思arm平台搭建ntp服务器,在ntp的移植过程中遇到了一些坑,网络上的一些教程都有各种各样的坑,我把自己的操作记录下来。操作系统: Ubuntu 22.04 LTS开发板 : hisi3531a。

2023-04-25 16:42:57 998

原创 win10下 wsl安装

控制面板,开启windows功能 1.hyper-V 2.适用于linux的windows子系统 3.虚拟机平机。或wsl --list --online 查询可用的发行版 wsl --install 安装。如果报错 0x80370102。

2023-01-28 13:11:21 1181

原创 操作系统 进程,线程,协程的区别。

进程,线程,协程的区别

2023-01-13 11:18:54 617

原创 GDB教程

gdb 使用详细教程gcc gdb-sample.c -o gdb-sample -g在上面的命令行中,使用 -o 参数指定了编译生成的可执行文件名为 gdb-sample,使用参数 -g 表示将源代码信息编译到可执行文件中。如果不使用参数 -g,会给后面的GDB调试造成不便。当然,

2023-01-13 08:51:38 483 1

原创 C++的四种类型转换: static_cast const_cast reinterpret_cast dynamic_cast

本人之前一直使用C语言的类型强制转换,最近写C++代码比较多。在github上看到其他人的代码并没有使用C语言的类型转换,了解到C语言的类型转换在C++中是不安全的。所以整理了一下C++的四种类型转换关键字的用法。...

2022-08-28 18:26:37 116

原创 vmware 虚拟机ubuntu 根分区磁盘扩容

前两天在vmware上创建了一台UBUNTU虚拟机,编译ANDROID源码时,发现40G的磁盘空间不够,在然后在虚拟机点击磁盘扩容。但是在ubuntu系统用fdisk -l并查看磁盘信息发现还有40G的空间没有挂载使用,于是想着把这40G的磁盘空间给扩容到根分区使用。 fdisk -l 查看分区信息,我们此次的目的是要将硬盘的60G空间全部分配给/dev/sda1,然后将其挂载到根目录。思路:删除原有分区 -> 创建新分区 -> 挂载一、删除原有分区用fdisk修改分区,fdisk /dev/sda

2022-06-16 11:08:46 1358

转载 C++ 原子操作(atomic)

1、atomic概述所谓原子操作,就是多线程程序中“最小的且不可并行化的”操作。对于在多个线程间共享的一个资源而言,这意味着同一时刻,多个线程中有且仅有一个线程在对这个资源进行操作,即互斥访问。C++ 11 新增atomic可以实现原子操作2、非原子操作#include <thread>#include <atomic>#include <iostream>using namespace std;int i = 0;const int maxCnt

2022-05-26 08:46:10 8353

转载 采用FFmpeg和nginx推RTMP视频流

一、FFmpeg推RTMP流准备工作首先确保自已已经安装了nginx + rtmp服务器。打开配置文件nginx.conf完成如下配置nginx配置.1二、FFmpeg推流1.推流MP4文件视频文件地址:/Users/xu/Desktop/bangbangbang.mp4 推流拉流地址:rtmp://localhost:1935/rtmplive/ho...

2019-06-12 09:35:38 609

原创 ibeacon UWB GPS 空间四点定位算法

最近在研究uwb空间四点的精准定位,其实是基于RSSI原理的,蓝牙IBEACON,GPS也差不多基于这个原理三维空间的四点定位算法:已知四个基站点的坐标(x1,y1,z1)(x2,y2,z2)(x3,y3,z3)(x4,y4,z4)和到未知点(x,y,z)的距离R1,R2,R3,R4所以四点定位使用矩阵求解方程的方式:其中要求的点的坐标是(x,y,z),已知的四个探针的位置为(...

2019-06-11 13:20:37 11951 5

原创 C++ 裁剪图片 分割图片 截图

我采用的是OPENCV的库#include <iostream>#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>using namespace std;using namespace cv;Mat img;Mat out;img = ...

2019-06-10 23:27:42 5262 2

转载 linux模拟键盘

#include   #include   #include   #include   #include   #include   #include     /* struct input_event {     struct timeval time;     __u16 type;     __u16 code;     __s32 valu

2017-02-28 09:40:40 745

原创 游戏光枪坐标定位原理及算法

我是做游乐行业的,要研发一款射击游戏机。现在要研发一款光枪,网上能找到的光枪大部分资料都是第一代的游戏机上面用的,用的还是有家里的老式电视机,加上霸王学习机,玩的射击游戏。我们研究是新的光枪好嘛。新型光枪是主要是有两种,一种是WII光枪,原理是红外感应条,加6自由度加速度的传感器。这种是相对位置,每次都要校准,体验感比较差。另一种是摄像头加红外光点来定位。就是摄

2016-06-14 10:46:34 4089 7

原创 树莓派人体感应报警器

买了一个香橙派。琢磨着做了一个人体感应报警器。需要的东西很简单,一个音乐播放芯片,一个继电器,一个漫步者的喇叭,一个人体红外感应器,五伏电源,一个香橙派,还有一个10K欧的电阻总共加起来。150块钱左右。这只是一个简易的报警器。我现在还不会linux上面音乐播放器编程,如果懂得编程的话,可以省掉音乐播放芯片和继电器后面还可以拓展给手机发短信的功能

2016-06-12 21:55:53 4787 2

原创 mplayer 音乐播放器封装类

最近要弄一款音乐播放器。虽然在网上能够找到类似的代码。但是不怎么方便调用。所以我自己写了两个文件,方便其他时候调用,是采用mplayer的命令行方式播放的。因为我要的功能不多,所以只写了几个函数,架构搭好了,需要的朋友可以添加XHMusicPlay.cpp文件////  XHMusicPlay.h//  ////  Created by gifter on

2016-06-12 21:05:14 1984

原创 命令行音乐播放器代码

最近想在linux平台下写一款音乐播放器,找了一下,没有其他的解决办法,于是想调用mmplayer的代码来达到播放音乐的目的,然后开始写了之后,发现需要用的技术还挺多的。包括,多线程编程,多进程编程,进程间通讯,线程间通讯,条件变量,互斥量,线程锁,有名管道以及无名管道,权当复习一下linux系统调用编程,下面我把代码复制到下面,大家参考一下,相关的资料在网上都能找得到。#in

2016-06-12 20:54:26 1026

转载 无名管道pipe

管道是UNIX系统IPC的最古老形式,所有的UNIX系统都支持这种通信机制。有两个局限性:(1)       支持半双工;(2)       只有具有亲缘关系的进程之间才能使用这种无名管道;pipe函数功能:创建无名管道函数原型:#include          int pipe(int filedes[2]);参数经由参数filedes返回两个文件描述符,filed

2016-06-12 17:21:58 658

原创 安装mplayer

MPlayer是一款开源多媒体播放器,以GNU通用公共许可证发布。此款软件可在各主流操作系统使用,例如Linux和其他类Unix系统、Windows及Mac OS X系统。MPlayer建基于命令行界面,在各操作系统也可选择安装不同的图形界面。mplayer的另一个大的特色是广泛的输出设备支持。它可以在X11、Xv、DGA、OpenGL、SVGAlib、fbdev、AAlib、DirectFB

2016-06-10 12:45:06 1552

转载 mac 命令行安装软件

之前一直怀念ubuntu下的apt-get,因为实在是方便,需要安装什么,一个命令搞定,相关的依赖包统统由apt-get维护。下载,编译,安装,那叫一个痛快。什么软件用着不爽,一个命令卸载!怀念apt-get之余,发现了替代工具MacPorts,据说也可以解决我的问题。但可惜,我总是无法更新本地软件索引库!homebrew主页对brew进行了详细的描述,不过我们更希望下载下来实战演

2016-06-10 12:11:34 3965

原创 Linux编程查看出错信息

#includeerrno函数判断系统调用是否出错#includestrerror()分析出错信息

2016-06-05 11:35:43 396

转载 C/C++头文件注释

/*********************************************************************************  *Copyright(C),2010-2011,Your Company  *FileName:  // 文件名  *Author:  //作者  *Version:  //版本  *Date:  //完成日期

2014-08-29 15:47:28 1454

原创 Socket中如何设置连接超时

设置connect的超时很简单,CSDN上也有人提到过使用select,但却没有一个令人满意与完整的答案。偶所讲的也正是select函数,此函数集成在winsock1.1中,简单点讲,"作用使那些想避免在套接字调用过程中被锁定的应用程序,采取一种有序的方式,同时对多个套接字进行管理"(《Windows网络编程技术》原话)。使用方法与解释请见《Windows网络编程技术》。  在使用此函数前,需

2013-10-10 15:48:03 574

原创 10048错误(WSAEADDRINUSE)的错误处理

这两天在工作的过程中发现基于socket的网络程序中时不时发生connect()调用失败的错误,通过获取错误码,发现是WSAEADDRINUSE(10048)的错误,MSDN的说明如下:           这种错误常常发生在bind函数中,当bind已经绑定的端口被占用后,再次绑定同一端口就会发生错误,但这一错误不影响bind的执行,换句话说,bind第二次执行并不发生错误,但是在紧接着

2013-07-18 10:05:02 3765

转载 C++发送邮件和附件

头文件[cpp] view plaincopy/*********************************************************************** *发送邮件模块头文件 *可以发送文本和附件(支持多个附件一起发送) ****************************************

2013-07-10 18:50:16 3505 1

MFC CListView类应用 示例

MFC CListView类应用 示例源代码

2022-06-15

Multi Projector Monitoring & Control Software.zip

松下投影机网络控制软件 远程开关机

2021-01-19

MFC_Ffmpeg_sdl2_Player.rar

基于MFC FFMPEG SDL实现的视频播放器源代码,不错的学习资料

2014-09-28

星空极速密码C语言2.0

较1.0软件修改只能破解8.0的BUG,现在能破解6位及10位密码了 修复破解时出现的乱码的BUG。

2012-08-17

Windows API函数速查

1。将压缩文件解压到一个目录 2。启动pa.exe,启动后程序会自动创建Pa.db默认数据文件,并加载winapi.db文件 3。启动后会在系统托盘中出现pa的图标 4。默认直接按快捷键Ctrl+F1,此时会弹出查询输入框 5。输入待查询的API函数名,如AbortDoc,按回车后就可出现结果

2011-12-08

WIFI无线路由器密码破解

让你可以破解WINDOWS的无线网络密匙(WEP/WPA)。该软件采用十六进制和 Ascii (如果提供)码显示带有适配器名称和用户图形界面的密匙。该信息可以被拷贝到剪贴板或者导出为 Text/HTML/XML 文件格式。该软件不需要进行安装 经使用可以正常使用.我的路由是D LINK的,测试可以使用。

2011-12-07

CAsyncSocket--UDP.rar

使用CAsyncSocket进行无连接(UDP)通信-UDP SOCKET.

2011-12-05

java 入门要注意的问题

本笔记收集了本人java 入门要注意的问题,同时还有解决方法。。和注意的习惯。。

2011-04-05

Alcor(安国)AU6983量产工具

Alcor(安国)AU6983量产工具。。。

2010-09-08

数据结构 试题及答案

上传一份我们学校考过的数据结构的试题包括答案,希望对考前复习的朋友 有所帮助!

2010-01-13

电子技术 模拟部分复习PPT

关于高教版本模电复习课件 主要用于复习及模电内容的总结 。。。。。。

2010-01-04

turbo c语言学习工具

一个不错的c语言学习工具, 特别是代码编辑器!方便了程序的编写!

2009-05-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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