Windows开发
Niap.pr
展开
-
opengl入门(五)错误处理
这就是为什么我要把平台从macOS换到windows的原因了,在设置opengl版本的时候,会莫名其妙的黑屏,openg也特别有意思,他根本不会告诉你哪里出了问题。所以,错误处理就很重要了。错误错误函数首先要清空错误,然后再去load错误,发生错误后,还需要断点到错误位置。这里打出来的只有错误代码。#define ASSET(x) if(!x) __debugbreak();#define GLCALL(x) GlClearError(); \ x\ ASSET(GlGetErr.原创 2021-08-30 16:07:58 · 833 阅读 · 0 评论 -
opengl入门(五)使用indices复用vertex
上一节中,使用了6个顶点来控制显卡的绘制顺序,但是可以发现,vertex中存在多个顶点的定义,有没有一种办法能够顶点只负责定义顶点,另外一个参数能够指导显卡绘制。vertex定义修改原来的6个节点成4个节点。 float positions[] = { -0.5f,-0.5f,//0 0.5f,-0.5f,//1 0.5f,0.5f,//2 -0.5f,0.5f,//3};//存入显存的大小修改为:glBufferData(GL_ARRAY_BUFFER,8*sizeof(floa.原创 2021-08-30 15:56:49 · 721 阅读 · 0 评论 -
opengl入门(四)windows平台的支持,绘制一个正方形
因为有一些莫名其妙的原因,macOS的opengl有些实现确实有点诡异,为了与教程保持一致,需要把整体项目迁移到windows平台Windows平台的支持支持cmake本身就是跨平台的,这里只需要在命令行中敲入cmake .就可以生成vs项目,打开项目,切换默认启动项目位"main",就能调试、运行了。CMakeLists的修改,只需要修改为下面的配置即可,其中glew和glfw都设置为静态库,且添加opengl32.lib的依赖即可target_link_libraries (main o.原创 2021-08-30 14:48:13 · 172 阅读 · 0 评论 -
windows虚拟摄像头开发
在之前的文章中研究过mac上虚拟摄像头的开发,主体思想就是借用obs的驱动,然后我们只要负责给驱动喂正确的数据就行了,那么同样的想法我在windows上复刻了出来。OBS 虚拟摄像头 windows版首先,最新的git地址是https://github.com/Fenrirthviti/obs-virtual-cam,整个项目依赖于ffmpeg,所以自己编译的话,需要先编译ffmpeg,如果不想编译ffmpeg,那就使用vcpkg,如果连 obs-virtual-cam都懒得编译,那就直接下载r.原创 2021-05-28 12:16:39 · 2732 阅读 · 2 评论 -
directsound播放32位float类型的pcm格式音频
在的雷霄骅《最简单的视音频播放示例8:DirectSound播放PCM》阐述了使用directsound播放pcm文件的方法。这里的pcm文件为16位int类型,但是项目中可能会遇到32位的int或者32为float。生成不同格式的pcm文件从文档中可以得到ffmpeg支持的音频类型有以下这么多种: ffmpeg -formats | grep PCM DE alaw PCM A-law DE f32be PCM 32-bit floating-poi.原创 2021-04-14 15:38:53 · 1178 阅读 · 0 评论 -
雷霄骅《最简单的视音频播放示例2:GDI播放YUV, RGB 》中YUV转RGB的过程
雷霄骅在 https://blog.csdn.net/leixiaohua1020/article/details/40266503 一文中提到了yuv转rgb的代码,通过简单的改造,就可以直观的看出yuv的模样。测试rgb的渲染。改动CONVERT_YUV420PtoRGB24 的代码如下。void CONVERT_YUV420PtoRGB24(unsigned char* yuv_src, unsigned char* rgb_dst, int nWidth, int nHeight){ .原创 2021-03-24 16:35:49 · 301 阅读 · 0 评论 -
[bug]/Zc:wchar_t-导致导出符号表从@GU?变成@_WU?
现象项目中静态链接某个库,库中明明有代码生成的obj,但是死活链接不上。记录这次debug过程,挺有意思的。理解错误信息error LNK2019: 无法解析的外部符号 “public: __cdecl google_breakpad::ExceptionHandler::ExceptionHandler(class std::basic_string<unsigned short,struct std::char_traits,class std::allocator<unsigne原创 2020-12-26 23:55:10 · 276 阅读 · 0 评论 -
CrashPad在Windows下的使用
gyp安装git clone https://chromium.googlesource.com/external/gyppython setup.py install检测是否已经安装好,可以在命令行中输入gyp,没有报命令不存在即可。编译CrashPad使用gyp生成vs项目。git clone https://chromium.googlesource.com/crashpad/crashpadgyp --no-circular-check src/client/windows/br原创 2020-09-13 22:58:51 · 5274 阅读 · 0 评论 -
把一个电脑上的软件发布成网页应用,C/S转B/S,RemoteApp,Rdweb
环境要求:CPU:最低2.0GHz处理器内存:最低4G显卡:核显以上操作系统:windows 7 x64及以上软件有效期:30天下载地址:pkg-win.zip部署方式场景1:跳板机模式,编码和转发全部在本机完成,本机承担了所有的计算和编码任务,远程计算机只作为服务器来使用,可以使用桌面。场景2:一体机模式,编码和转发全部再远程完成,本机只需要打开浏览器即可,但是在远程计算机不支持多人登录的情况下(可破解),不能打开桌面,应用打开不受影响。部署步骤关闭防火墙打开控制面板->原创 2020-06-08 14:14:54 · 2280 阅读 · 5 评论 -
freerdp在windows中的编译(with openh264)
我自己编译的node-freerdp2模块在window 7中会莫名其妙的报一个错误。[ERROR][com.freerdp.codec] - QueryInterface(IID_ICodecAPI) failure: 0x80004002[16:11:24:606] [3868:00000eac] [ERROR][com.freerdp.codec] - mf_init failure[16:11:24:607] [3868:00000eac] [ERROR][com.freerdp.core原创 2020-06-02 16:23:32 · 1343 阅读 · 2 评论 -
Freerdp(stable-2.0)在Windows中的编译
freerdp再stable-2.0中引用了libusb,虽然增加了编译的难度,但是编译方法是一致的。编译环境操作系统:Windows 10 1809VisualStudio环境: Visual Studio Enterprise 2015 14.0FreeRdp版本:stable-2.0编译过程安装Cmake注意勾选添加到桌面安装vcpkg1,Git下载vcpkg *(没有git先安装git)git clone https://github.com/microsoft/vcpkg.原创 2020-06-01 14:44:56 · 1135 阅读 · 0 评论 -
freerdp获取cursor的方法
rdp协议中会把图像和鼠标样式分开发送,这样做的好处是,避免鼠标与图像一起绘制时会导致鼠标严重延迟,freerdp中可以很容易的获取鼠标样式的bitmap,但是在windows中,需要绘制ico就需要重建icoinfo文件,相对复杂,不是本文关心的内容,因此本文只介绍如何获取rbga内容。入口函数创建一个保存鼠标样式的数据类型,node_register_pointer函数需要在freerdp_connect函数中首先调用,typedef struct _NodePointer{ rdpPoi.原创 2020-05-29 10:49:44 · 723 阅读 · 0 评论 -
wfreerdp中剪切板原理
剪切板是freerdp中相对复杂的一个实现,主要难点在于整个通讯的流程,channel部分和rail的实现相似。主要是在剪切板初始化的时候实现MonitorReady、ServerFormatDataRequest、ServerFormatDataResponse函数。此处仅完成从client->server端的拷贝。流程简介MonitorReady部分,剪切板准备部分。主要是把本地支持的剪切板类型发送给rdp server,这部固定写法,不用纠结。UINT cliprdr_send_.原创 2020-05-09 15:49:05 · 1437 阅读 · 13 评论 -
wfreerdp核心原理
wf_post_connect中的gdi_init这个函数只要作用是创建primary,并且设置gdi回调,比如,直线用哪个函数画,曲线用哪个函数。如果直接使用gdi_init,则gdi->primary_buffer就是绘制产生的图像rgb数据。在wfreerdp中,首先创建primary为自定义数据类型,其中包含一个dib,和这个这个dib对应的hdc,其实就是在windows开...原创 2020-04-26 20:51:59 · 2256 阅读 · 4 评论 -
Freerdp2中sfreerdp在windows中运行
了解 \client\Sample 下的freerdp.c,有助于了解freerdp的结构。当然首先,需要先在windows 中成功编译freerdp链接。然后可以看到Debug目录下会生成freerdp2.lib、freerdp-client2.lib、winpr2.lib、cliprdr-client.lib等静态库,Include目录下有freerdp的头文件,\winpr\include...原创 2020-04-17 22:19:43 · 1863 阅读 · 1 评论 -
禁用并删除Windows自带的最大化(还原),最小化按钮,设置窗口最大化,禁止拖动
如果想实现对windows某个窗口的操作,首先需要拿到这个窗口的窗口句柄,实际上拿到了窗口句柄以后就可以对窗口做任何修改,这里用最大化和最小化来举例子。Windows Hook1,《逆向工程核心原理》第三部分,Dll注入介绍了使用SetWindowsHookEx函数来拦截窗口事件,SetWindowsHookEx可以在每个进程中插入指定的Dll函数,此dll可以拿到运行程序的所有Windo...原创 2020-04-16 14:03:04 · 2047 阅读 · 1 评论 -
FreeRdp在Windows中的编译
网上大多数在windows下安装Freerdp的方法都是先编译openssl,然而编译需要安装perl和nasm,非常麻烦,然而这个工作可以完全交给vcpkg编译环境操作系统:Windows 10 1809VisualStudio环境: Visual Studio Enterprise 2015 14.0FreeRdp版本:2.0.0-rc4编译过程安装Cmake注意勾选添加到桌...原创 2020-04-13 18:12:04 · 1714 阅读 · 0 评论