自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

力为的博客

OpenGL|ES|WebGL|Vulkan显示引擎 ACIS|OpenCASCADE几何造型 CAD|CAE|CAM工程应用

  • 博客(188)
  • 资源 (4)
  • 收藏
  • 关注

原创 使用.NET6 Avalonia开发跨平台三维应用

本文介绍在Vistual Studio 2022中使用Avalonia和集成AnyCAD AvaloniaUI三维控件的过程。

2024-01-30 15:32:54 1038

原创 加速安装pip

python get-pip.py -i https://pypi.douban.com/simplepip config set global.index-url https://mirrors.aliyun.com/pypi/simple/

2022-03-30 14:28:57 745

原创 H5 canvas接收键盘事件

HTMLCanvas接收事件的前提:Canvas得到焦点(Focus)Canvas 获取焦点的前提:给Canvas设置了tableIndex。window.onload = function() { let myCanvas = document.getElementById('canvas'); myCanvas.tableIndex = 1; document.addEventListener('mousedown', function(event) {

2022-01-20 17:52:37 850

原创 Docker运行artifactory-cpp-ce权限问题解决

创建目录:sudo mkdir -p /jfrog/artifactorysudo chown -R 777 /jfrog/运行jfrog/artifactory-cpp-ce出错:/var/opt/jfrog/artifactory DOES NOT have proper permissions for user 'artifactory' (id 1030)Directory: /var/opt/jfrog/artifactory, permissions: 755, owne.

2020-06-09 22:15:37 1031

原创 使用UOS开发C++程序

## 切换到Deepin系统源sudo deepin-editor /etc/apt/sources.list增加:deb [by-hash=force] http://packages.deepin.com/deepin stable main contrib non-free更新源数据库:sudo apt-get update## 安装开发工具sudo apt-get install build-essentialsudo apt-get install ...

2020-05-20 00:05:59 4327 2

原创 使用nuget打包.Net和Native DLL

目标使用Nuget管理x86/x64多平台的,适应AnyCPU, x86,x64编译选项步骤1. 设置Package.nuspec<?xml version="1.0"?><package > <metadata> <id>XYZ</id> <version>1.0.6</v...

2020-05-06 17:13:39 967

原创 Vuex:以状态为中心的消息触发机制

基于状态的组件之间的一对多的事件通知机制:1. 组件A触发状态更改 基于Vuex的mapActions,触发状态修改2. 组件B、C对状态更改做出响应 基于mapGetters和watch,监听状态更改...

2020-04-30 13:11:12 623

原创 EventLoop for WinForm

abstract class EventLoop { protected static bool mExit = false; protected static int mCode = 0; protected static EventLoop mImpl; public static void Register(E...

2020-04-27 16:37:52 249

原创 vcpkg + CMake

除了Conan外,vcpkg也是不错的C++包管理工具。跟conan相比,vcpkg是源码级的包管理,安装包的时候同时在本地编译。安装vcpkggit clone https://github.com/Microsoft/vcpkg.gitcd vcpkg#编译.\bootstrap-vcpkg.bat#集成vcpkg integrate install安装包...

2019-10-29 11:02:17 14137 5

原创 Javascript中for-in效率分析和优化

 Javascript程序中,我们经常使用Object来模拟dictionary/map/hashmap的行为,也会使用for-in语法来遍历dictionary的元素。但你是否遇到过由于使用for-in而导致程序产生性能问题呢? 问题Javascript里的数据结构比较简单,除了数组,就是使用对象模拟的字典/Hash表。比如:var dict = { key1: "va...

2018-10-13 13:03:24 2247

原创 Python插件机制实现

插件机制是代码/功能反向依赖注入到主体程序的一种方法,编译型语言通过动态加载动态库实现插件。对于Python这样的脚本语言,实现插件机制更简单。机制Python的__import__方法可以动态地加载Python文件,即以某个py脚本的文件名作为__import__的参数,在程序运行的时候加载py脚本程序模块。对应的import关键字则是静态加载依赖的py模块。描述__impor...

2018-09-17 10:48:37 2818

原创 Canvas2D绘制填充面

组成面的loop分为outer loop和inner loop,其中outer loop一般为逆时针,inner loop一般为顺时针。如果inner loop的顺序与outer loop一致,则不内部的loop会失效。&lt;!DOCTYPE html&gt;&lt;html&gt;&lt;body&gt;&lt;canvas id="myCanvas" width="1000" h...

2018-05-23 12:50:19 3031

原创 GDI设置字体旋转的方法

方法1:通过设置WorldTransform进行变换:angle为文字旋转的角度position为文字的位置 XFORM xForm; xForm.eDx = float(position.x); xForm.eDy = float(position.y); xForm.eM11 = float(cos(angle)); xForm.eM12 = float(sin(a...

2018-04-02 13:27:57 2078

原创 Entity Framework 和 Sqlite

记录在使用Entity Framework 和 Sqlite遇到的坑

2017-06-15 13:33:45 2660

原创 Sketchup文件纹理提取

除了材质上的颜色,材质上的纹理(Texture)是我们最为关心的元素。控制纹理能够在Face上正确的显示,可以由两个方式控制:1)修改texture coordinates(UVQ)的值2)修改Texture上的Scale从Sketchup的SDK可以获取上面的两个数据,并且Sketchup是同时使用上述两种方案。

2017-05-18 11:10:13 4050

原创 可变参数宏与枚举

可变参数的宏与枚举结合会产生什么样子的火花?有时候定义了枚举需要知道枚举值对应的字符串表达,有点像反射的机制。该如何简洁的实现而又不容易出错?

2017-04-13 11:48:35 809

原创 Web Worker Best Practices

使用Web Worker可以把一些比较计算量相对大的阻塞浏览器响应的计算放在单独的线程里计算。请求优化构造Worker的时候需要给定js的链接URL,worker内部请求js运行代码。假如worker有若干个,但使用同一个js文件,也仍然会请求js多次。听起来就不是个好的方法。能够做到只请求一次worker js就最好了。那如何做到?使用window.URL.createObjectURL可以构造

2016-07-20 14:20:53 1238

原创 MFC误报内存泄露的修复

在debug状态退出程序的时候,VS会在输出窗口列出可能的内存泄露的地方。MFC中使用DEBUG_NEW能够更方便的定位泄露的地点。但假如MFC的dll释放“”过早“”,DEBUG_NEW记录的内存分配信息就会不灵了。那什么情况下导致MFC的DLL过早释放呢?有这样一种情况:以#pragma comment(lib, _LIBNAME_)方式link一个依赖MFC的lib。比如在使用BCGCont

2016-07-02 21:52:18 2139

原创 以传值方式传参数引发的栈溢出

考虑到性能问题,如果是自定义的class对象,一般都会以传引用/地址的方式传递参数。如果按照这样的信条写程序,就不会遇到下面遇到的问题了。最近在帮一个朋友查看一个bug,现象是这样的:执行一个函数的时候,抛出一个stack overflow的异常。在函数体的第一行设置端点,执行的时候,程序停止响应。在函数外部设置断点,step in根本就进不去。细一看,这个函数以传值的方式传入了一个自定义的对象,

2016-07-02 11:24:25 1802

原创 大规模WebGL应用引发浏览器崩溃的几种情况及解决办法

一般的Web应用基本上不会导致浏览器崩溃,写Javascript代码也不需要管理内存资源,基本也不需要考虑内存“泄露”的问题。随着H5的崛起,越来越多的原本在桌面端的软件也改头换面迁移到Web上来,比如三维图形类的应用。在Web端显示大规模三维模型不仅仅是三维显示引擎的问题,也涉及到数据组织、任务调度、资源管理、浏览器兼容等方方面面。这里针对在项目中遇到到几种把浏览器高挂的情况简要列举了一下。

2016-06-04 17:17:00 45132 3

原创 Vulkan的分层设计

Vulkan驱动层提供了简单高效的API。作为Vulkan API的使用者,我们要严格遵循Vulkan API的使用规则。如果我们违反了这些规则,Vulkan只会返回很少的反馈,它只会报告一部分严重和重要的错误,比如内存不够啦、指针越界啦等等。如果我们想获取其他更多的错误提示信息怎么办?这就需要启用Vulkan 的“调试验证层"。 调试验证层由多个层组成的,可以根据需要搭配,比如内存使用情况、输入参数验证、对象生命周期检查等等。开启越多的调试和验证功能,就意味着程序会越慢。这些功能在程序调试和查找bug

2016-05-11 10:09:09 2370

原创 异步请求引发的Chrome死锁

浏览器支持的并发异步请求数目是有限的,当需要的资源过多时候(远远大于并发数目),就需要自己管理XHR请求。在实现自己的XHR的Manger时候,当请求数目达到2000多的时候,经常会遇到chrome的xhr状态为pending的情况。开始猜测是不是因为请求的数目太多所致。于是测试顺序请求2000多的xhr,结果chrome正常工作。检查自己的代码后发现,原来是存在同一资源同时请求的情况。在这种情况

2016-04-15 15:45:54 6507 2

原创 dynamic initializer和全局变量

“慎用全局变量,包括全局静态变量“ 是众所周知的原则,因为全局变量除了会增加程序的维护成本。如果全局变量是个复杂的对象,并且还使用其他的全局变量,那情况就变得复杂的多。因为全局变量初始化的顺序不是coder所能掌控的。而初始化全局变量就是所谓的”dynamic initializer“,即动态初始化。把全局变量局部化,可以解决全局变量之间的依赖引起的初始化顺序不确定的问题。比如:static OS

2016-03-23 15:26:09 2906 1

原创 Vulkan API基本概念

Instance具体的Vulkan应用由“实例”表示。一个程序中可以创建多个实例,实例之间相互独立,互不干扰。Vulkan实例由驱动装载器(loader)管理。装载器负责发现GPU设备,是多设备驱动的组合体。当调用API创建Vulkan实例的时候,Vulkan SDK内部会经由loader查找GPU设备。创建Vulkan实例需要两个输入信息:  应用程序的信息  内存分配回调函数Vulkan通过用

2016-03-05 22:36:30 10943 1

原创 初识Vulkan

Vulkan是Khronos组织制定的“下一代”图形显示API,是与DirectX12可以匹敌的GPU API标准。目前,Vulkan 1.0标准已经完成并正式发布。上一代的OpenGL|ES并不会被遗弃,还会继续发展,很有可能OpenGL|ES变为Vulkan的简化API。

2016-03-05 14:47:27 13354 5

原创 ActiveMQ + NodeJS + Stomp 极简入门

前提 安装ActiveMQ和Nodejs测试步骤1.执行bin\win32\activemq.bat启动MQ服务2. 打开http://localhost:8161/admin/topics.jsp用户名和密码都是 admin3. 下载Stompnpm install stomp-client4. js的测试代码var Stomp = require('stomp-client');var de

2016-01-30 17:14:01 9853 1

原创 优化Javascript数据遍历

问题M是一个对象的集合,没个对象拥有唯一的字符串类型的IdN是Id的集合。从M中过滤掉Id不在N中的对象。假如M有50w个数据,N中可能是0~50w任意的数据。方案1使用数组保存Id的集合。这样就有两种方式遍历1.1 N = [id, ...];for(var m in M)   for(var n in N){ .....}1.2for(var m in M)    if(N.indexOf(m

2016-01-26 16:51:56 2399 4

原创 使用std::vector优化点云动画显示一例

1. 准备使用std::vector应该知道几点:(1)内存连续的容器,有点像数组(2)与std::list相比,插入和删除元素比较慢- 因为数据迁移(3)添加元素可能会引发内存分配和数据迁移。2. 问题AnyCAD::API::PointCloudNode使用FloatList  及std::vector来存储一些列的点[x0, y0, z0, x1, y1, z1, .....]:void S

2015-11-03 16:37:17 2875 1

原创 IE下的deflate模式

浏览器有一个非常有用的特性:自动解压。在使用AJAX请求数据的时候,数据在服务器端压缩传输,在浏览器端自动解压,请求直接得到解压后的结果。在Request Header中,一般会列出浏览器支持的压缩格式,如ChromeAccept-Encoding:gzip, deflate, sdchIE11和Edge也号称支持gzip, deflate模式。然而, 在实际使用过程中发现,IE11和Edge并不

2015-10-10 13:27:04 2649 1

翻译 使用jQuery AJAX读取二进制数据

READING BINARY DATA USING JQUERY AJAXhttp://www.henryalgus.com/reading-binary-files-using-jquery-ajax/Query is an excellent tool to make web development easy and straightforward. It helps while doing

2015-10-10 12:44:45 21107 1

原创 require.js使用步骤

以superagent为例1.设置lib目录requirejs.config({ baseUrl: 'libs' });2. 使用SuperAgent    require(['superagent'], function (request) {        var req = request.get(url);        req.end(function (err, res) {     

2015-09-29 14:45:08 2040 1

原创 2015武汉校园招聘归来

结束了在武汉四天的校招行程。第一天判笔试题到晚上十二点,接着连续技术面试两天半。校招不仅仅是脑力上考验,也是体力上的考验。但相比去年在成都的招聘行程,今年感觉轻松许多,从而也有精力写写这几天的感想。

2015-09-26 11:48:31 2197 7

原创 MFC的两个问题

1.启动WinApp的时候,报 ASSERT(AfxGetThread() == NULL)错误依赖的MFC DLL工程设置里面加上_USRDLL2. MFC误报内存泄露全局对象释放的问题,添加mfcXXXud.lib

2015-04-18 12:51:25 937

原创 Windows下配置nginx+FastCgi + Spawn-fcgi

前提:下载nginx, FastCgi, Spawn-fcgiSpawn-fcgi有个Windows的版本,但不能在VS中编译,这里有一个编译好的版本:http://download.csdn.net/detail/mythma/8589405FastCgi程序这里使用echo-cpp。把exe复制到nginx的cgi-bin目录中。nginx配置:在nginx.conf的server字段 中加上

2015-04-13 13:21:20 5010

原创 OpenGL下多个sampler在shader中的使用

在OpenGL中,sampler2D/Cube等做为uniform可以在fragment shader中使用。结合glActiveTexture和glUniform1i,实现texture与sampler的绑定。正常情况下的使用,可以参照各种GLSL教程里的例子。这里说一下非正常情况下在shader中使用多个sampler。

2014-09-01 15:46:21 11154 1

原创 结合FireBreath在Chrome/FireFox的多进程模式下崩溃一例

FireBreath是跨浏览器跨操作系统的插件k

2014-05-26 10:57:28 2852 2

原创 FFmpeg与VS2010

使用VS来编译FFmpeg是一件及其痛苦的事情,

2014-05-22 09:46:27 4682

原创 OpenGL Shader Key Points (3)

Shader和Program

2014-05-06 14:49:30 1186

原创 误差补偿

需要绘制"云图",类似如下想形状:思路很简单,根据总长度和步长计算弧的个数,然后挨个绘制即可。于是有:double length = ...double step = ...int count = length/step假如,刚好能够整除,绘制的结果是正确的。但,在动态绘制过程中,大部分都不是刚好整除。于是,需要根据count重新调整step:step = length/count然后,循环绘

2014-03-26 14:07:46 1711

原创 OpenGL Shader Key Points (2)

1.  Uniform1.1.  Uniform变量不是所有的变量都是跟顶点一一对应的,如变换矩阵,光源位置等。Uniform变量可以在任何类型的shader中使用,但只能作为输入值,不能在shader中给它赋值,只能在C/C++程序中指定。  layout (location = 0) in vec3 VertexPosition;layout (location = 1) in vec3 V

2013-08-12 11:11:43 1883

spawn-fcgi-1.6.4 for Windows

spawn-fcgi.exe Windows下运行

2015-04-13

Netgen library 5.0 win32

编译好的netgen库文件,基于netgen 5.0。

2013-01-23

AnyViz.Demo

做一个比OpenCASCADE显示更好的三维显示引擎。 也主要用于显示occ的toposhape

2009-03-27

VC2005/2008运行时

VC2005 VC2008运行时库 以后没有装VC也不怕了,就用这个!

2009-03-27

空空如也

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

TA关注的人

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