- 博客(40)
- 收藏
- 关注
原创 关于在线CAD编辑的解决方案思考
对于MVT的矢量切片,JSMap的逻辑是在上层基本完全复刻CAD的基本对象,在对象中添加一个渲染方法,最终是将生成的SVG对象传入到Canvas中。梦想控件 在线CAD有两种方式,一种是比较古老的Com组件(不能跨平台、依赖IE)和最新使用threejs来实现的在线CAD的渲染,支持将CAD的渲染图层嵌入到mapbox-js的自定义图层中渲染(主要是接管WebGL的上下文),其渲染的样式由mxCAD基于threejs来来实现其渲染,其原理还是使用在前端来实现自定义渲染。本文简单的测试了一下。
2023-04-19 08:52:28 1777 2
原创 PixiJS 渲染优化
最近做在线CAD可视化与编辑,对前端的可视化渲染技术进行了选型,对于二维CAD来说一般用canvas就够了,但是canvas每一次平移,缩放,更新数据都需要重新计算渲染所有的图形数据,数据一多就显得非常卡。如果使用三维webgl,在没有任何第三方的开源封装技术下,通过webgl去实现二维也是会遇到很多问题。基于此,找到了PixiJS这个支持canvas和webgl渲染的引擎,关键是非常快(之前在github看到过一个在线的程序测试,有十几种渲染引擎的测试,我对比过确实是最强的,这个网站忘记在哪里了)
2023-04-16 17:14:13 2319 5
原创 skia 之canvas
canvas是skia的核心部分,skia的逻都是围绕skcanvas对象来组织管理的,通过skcanvas可以指定不同的渲染上下文、draw call(绘制命令)、以及绘制状态管理(如绘图矩阵、操作栈等)skcanvas的状态skcanvas和 skpaint共同提供了sksurface和skbasedevice上绘制的状态,skcanvas保存了所有操作的堆栈,通过 save和restore这两个方法来管理skcanvas的操作状态信息。Backendskcanvas是可以指定在特定的像素上.
2022-03-26 08:41:59 2366
原创 skia库windows下编译动态库及webassembly编译
skia是一个开源的矢量渲染引擎,不仅用于Google Chrome浏览器,新兴的Android开放手机平台也采用skia作为绘图处理。编译skia需要一个稳定的上网环境(一定要有科学上网环境,不然没有办法拉取第三方库,网上也有说通过配置一些来获取第三方库的,但我都出现了各种问题,花了一天都没有解决,最后还是找到一个科学上网环境来解决的)1. 环境准备skia源码 https://github.com/google/skia.gitskia 官网 https://skia.org/python
2022-03-16 11:39:52 1866
原创 实现类CAD的交互式命令系统
看一段操作:上面这个动画是我自己花了一周实现CAD绘图系统,里面实现了类CAD的交互命令交互式命令操作流程通过在命令栏或者菜单触发命令来启动相关功能,在命令执行过程中,命令栏提示当前命令的输入状态,当用户根据命令提示中的输入信息完成相应的操作(如在地图中点击某个点或者输入某个字符串)之后继续命令的下一步操作,直到命令的结束。这种操作方式在设计类、地图类软件中经常用到,如AutoCAD,ARCGIS软件中,实现方式也有很多种。也各有优缺点,本文主要介绍类CAD系统中的交互命令实现。在AutoC
2022-01-04 16:35:19 1580
原创 单文件打包工具介绍
单文件打包的软件具有单文件、免安装、拷贝方便的特点,对于研发人员来说,也相对于对程序进行了一个简单的加密(防止别人看到软件使用了那些库,解决一些开源协议、闭源SDK的使用问题)单文件打包的两种方式使用类似于winrar的压缩为exe这种方式原理就是类似于winrar的自解压(即压缩包也可以像setup程序一样,双击后显示一个软件许可,然后自动解压在指定目录,最后自动运行软件,不明白的可以直接度娘"自解压"),实现了数据和程序的打包。非常的方便。但是使用winrar自带的功能还是比较麻烦的,这里介绍一
2022-01-03 13:11:14 1769
原创 cario windows 下编译
cario windows 下编译什么是Cairocairo是一个小型的2D图形库,支持Linux、Windows、macOS X等平台。封装了一部分在当前平台上的图形API,或是直接访问底层接口。他支持win32、x-window、svg、opengl等多种输出设备。cario的编译相对比较简单,但是在windows下遇到各种问题,就是没有很好的解决办法你需要准备什么MSYS2在windows下模拟liunx的环境的软件,MSYS 是用于辅助 Windows 版 MinGW 进行命令
2020-06-27 09:25:34 1452
原创 从0到1构建自己的插件系统--插件管理
从0到1构建自己的插件系统–插件管理之前的文章已经可以完整的写完一个插件,在本章节中我们解决插件的管理问题插件管理是可以让各个插件调用的桥梁,达到连通各个插件的目的,插件编写者无需考虑插件之间的依赖关系,所有的这一切都由插件管理类来解决。插件管理主要有两个部分组成,插件管理类和模块信息类。插件管理本身也可以认为是一个插件,这个插件是需要依赖lib的插件,在这个特殊插件中我们需要解决不同类型插件(如C++,JAVA,C#写的二次开发插件)插件加载插件接口类为了解决插件可以使用不同的语言实现
2020-06-26 17:33:06 929
原创 C#的WinForm中嵌入Qt界面库
C#的WinForm中嵌入Qt界面库为何会有如此奇葩需求一处代码,多处运行C#有两种写界面的框架,winFrom和WPF,这二者写的界面可以相互调用,但C#编写的界面组件在非托管C++虽然理论上可以,但是这种类似反射的机制使用其他来说特别不舒服。而对于编写组件式SDK而言,核心的界面组件可以在C++、C#、JAVA中使用而无需修改太多的代码是我们的终级目标。ocx 编写难度太大使用MFC编写的OCX控件可以嵌套在各种高级语言甚至浏览器中,但对于新时代的开发人员而言,会MFC开发的越
2020-06-20 07:58:46 8238 13
原创 从0到1构建自己的插件系统--类注册
从0到1构建自己的插件系统–类注册ps:纠正前面一个错误,之前的函数获取类的接口列表返回了数组,这是没有这个用法。可以使用std::vector代替,或者返回数组指针。插件的核心在之前的一篇文章中,我么了解到了建立插件的优势以及如何去建立一个插件类,但最终的目的还是为了能够在在插件dll中找到这个类并且创建它,这就是我们写插件的目的,这也是我们写插件的核心。类注册就是为了实现类的对象的创建工作,类注册的方式最核心的其实就是写回调函数(可以是全局函数或者是类的静态函数),这种方式可以理解为抽象工厂模式
2020-06-16 08:13:42 238
原创 从0到1构建自己的插件系统--接口定义与类对象的实现逻辑
从0到1构建自己的插件系统–接口定义与类对象的实现逻辑上篇文章我们简述了自主插件的特点以及基本的流程,本文着重讲插件化框架的基本实现策略看看插件的类对象如何使用没有使用过COM 组件开发的研发人员,可能对于组件的强大是没办法理解的。那么我们先来看看一个简单的例子Object<ISample> sample_class(CLSID_SAMPLE);sample_class->add(2,4);非常简单的一段代码,初步看起来没有什么特点,看起来像是一个智能指针类的创建方式,那么
2020-06-15 08:32:18 465
原创 从0到1构建自己的插件系统--序篇
从0到1构建自己的插件系统--序篇从今天起、我们谈谈如何构建自己简单易用的插件系统,让我们的系统瞬间变的高大上,让自己的架构能力上一个档次。不纳入插件系统,有什么危害需求的不断变化,导致系统越来越臃肿,扩展不方便一旦对软件产品进行功能更新,会导致一系列的变化,导致研发成本特别高,需要对整个系统进行测试常用插件系统与自制系统对比Qt是一个跨平台的C++的图形界面库,整个生态很完整,类似于Boost,提供了几十个模块(基础STL库、绘制、3D、网路、多媒体、协程、多进程、NFC、数据库、.
2020-06-11 09:28:41 757
原创 gdal linux环境下的android 全编译
相关参考Asen_十足坏蛋的GDAL for Android 从编译到读写shp预先说明gdal 版本为2.3.1 编译的so版本为arm-v7a操作系统为在Virtual Box 6.0上安装的ubuntu-16.04.1-desktop-amd64.iso 版本本次编译中依赖的第三方库编译包括proj、geos、expat、kml、json-c、sqlite准备工作Vi...
2019-04-08 10:33:03 851 3
原创 ANDROID 与C++ 联合调试踩坑指南
使用C ++与Android的联合开发背景本人在一家做GIS软件公司担任研发经理的职务。主要工作是做测绘软件产品的研发。目前公司需要自主研发一套测绘行业软件,要求做一套类CAD的平台,对采集的地理信息数据(MDB,SHP,DWG)进行存储(要求支持的矢量数据支持在GB以上,并能够快速的查询搜索定位数据),之后将矢量数据展现在地图视口中,对海量数据进行快速的展示与渲染,同时支持矢量数据的符号...
2018-08-06 15:18:13 307
原创 SWIG与JAVA的交互指南一
项目背景最近开始研究做移动端项目,但是本人基本是做了五六年的c++的底层研发,对C++的研发可以说是驾轻就熟了,但是对于android还是属于刚入门阶段,虽然断断续续做移动端也做了一年,但是没有一个系统的去研究过android,怎么才能结合两者的优势呢。我决定用C++写底层。 * ANDROID是运行JAVA虚拟机层,编译的是字节码,效率不会太高,特别是密集型CPU计算。 * 希望用更快速...
2018-06-16 15:07:08 1738 2
基于UE官方像素流改造的UE部署程序
2024-03-14
webgpu C++ 学习示例程序
2024-03-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人