自定义博客皮肤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工程应用

原创 vcpkg + CMake

除了Conan外,vcpkg也是不错的C++包管理工具。跟conan相比,vcpkg是源码级的包管理,安装包的时候同时在本地编译。 安装vcpkg git clone https://github.com/Microsoft/vcpkg.git cd vcpkg #编译 .\boots...

2019-10-29 11:02:17

阅读数 1169

评论数 0

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

  Javascript程序中,我们经常使用Object来模拟dictionary/map/hashmap的行为,也会使用for-in语法来遍历dictionary的元素。但你是否遇到过由于使用for-in而导致程序产生性能问题呢?   问题 Javascript里的数据结构比较简单,除了...

2018-10-13 13:03:24

阅读数 564

评论数 0

原创 Python插件机制实现

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

2018-09-17 10:48:37

阅读数 1420

评论数 0

原创 Canvas2D绘制填充面

组成面的loop分为outer loop和inner loop,其中outer loop一般为逆时针,inner loop一般为顺时针。如果inner loop的顺序与outer loop一致,则不内部的loop会失效。 <!DOCTYPE html> &lt...

2018-05-23 12:50:19

阅读数 417

评论数 0

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

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

2018-04-02 13:27:57

阅读数 863

评论数 0

原创 Entity Framework 和 Sqlite

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

2017-06-15 13:33:45

阅读数 1809

评论数 0

原创 Sketchup文件纹理提取

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

2017-05-18 11:10:13

阅读数 1847

评论数 0

原创 可变参数宏与枚举

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

2017-04-13 11:48:35

阅读数 478

评论数 0

原创 Web Worker Best Practices

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

2016-07-20 14:20:53

阅读数 1076

评论数 0

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

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

2016-07-02 21:52:18

阅读数 1727

评论数 0

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

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

2016-07-02 11:24:25

阅读数 1372

评论数 0

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

一般的Web应用基本上不会导致浏览器崩溃,写Javascript代码也不需要管理内存资源,基本也不需要考虑内存“泄露”的问题。随着H5的崛起,越来越多的原本在桌面端的软件也改头换面迁移到Web上来,比如三维图形类的应用。在Web端显示大规模三维模型不仅仅是三维显示引擎的问题,也涉及到数据组织、任务...

2016-06-04 17:17:00

阅读数 36528

评论数 2

原创 Vulkan的分层设计

Vulkan驱动层提供了简单高效的API。作为Vulkan API的使用者,我们要严格遵循Vulkan API的使用规则。如果我们违反了这些规则,Vulkan只会返回很少的反馈,它只会报告一部分严重和重要的错误,比如内存不够啦、指针越界啦等等。 如果我们想获取其他更多的错误提示信息怎么办? 这就需...

2016-05-11 10:09:09

阅读数 2038

评论数 0

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

浏览器支持的并发异步请求数目是有限的,当需要的资源过多时候(远远大于并发数目),就需要自己管理XHR请求。在实现自己的XHR的Manger时候,当请求数目达到2000多的时候,经常会遇到chrome的xhr状态为pending的情况。开始猜测是不是因为请求的数目太多所致。于是测试顺序请求2000多...

2016-04-15 15:45:54

阅读数 5893

评论数 2

原创 dynamic initializer和全局变量

“慎用全局变量,包括全局静态变量“ 是众所周知的原则,因为全局变量除了会增加程序的维护成本。如果全局变量是个复杂的对象,并且还使用其他的全局变量,那情况就变得复杂的多。因为全局变量初始化的顺序不是coder所能掌控的。而初始化全局变量就是所谓的”dynamic initializer“,即动态初始...

2016-03-23 15:26:09

阅读数 2191

评论数 1

原创 Vulkan API基本概念

Instance具体的Vulkan应用由“实例”表示。一个程序中可以创建多个实例,实例之间相互独立,互不干扰。Vulkan实例由驱动装载器(loader)管理。装载器负责发现GPU设备,是多设备驱动的组合体。当调用API创建Vulkan实例的时候,Vulkan SDK内部会经由loader查找GP...

2016-03-05 22:36:30

阅读数 9288

评论数 1

原创 初识Vulkan

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

2016-03-05 14:47:27

阅读数 11933

评论数 4

原创 ActiveMQ + NodeJS + Stomp 极简入门

前提 安装ActiveMQ和Nodejs测试步骤1.执行bin\win32\activemq.bat启动MQ服务2. 打开http://localhost:8161/admin/topics.jsp用户名和密码都是 admin3. 下载Stompnpm install stomp-client4....

2016-01-30 17:14:01

阅读数 8450

评论数 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 ...

2016-01-26 16:51:56

阅读数 1934

评论数 4

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

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

2015-11-03 16:37:17

阅读数 2359

评论数 1

原创 IE下的deflate模式

浏览器有一个非常有用的特性:自动解压。在使用AJAX请求数据的时候,数据在服务器端压缩传输,在浏览器端自动解压,请求直接得到解压后的结果。在Request Header中,一般会列出浏览器支持的压缩格式,如ChromeAccept-Encoding:gzip, deflate, sdchIE11和...

2015-10-10 13:27:04

阅读数 2363

评论数 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 developm...

2015-10-10 12:44:45

阅读数 17732

评论数 1

原创 require.js使用步骤

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

2015-09-29 14:45:08

阅读数 1871

评论数 1

原创 2015武汉校园招聘归来

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

2015-09-26 11:48:31

阅读数 1967

评论数 7

原创 MFC的两个问题

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

2015-04-18 12:51:25

阅读数 764

评论数 0

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

前提:下载nginx, FastCgi, Spawn-fcgiSpawn-fcgi有个Windows的版本,但不能在VS中编译,这里有一个编译好的版本:http://download.csdn.net/detail/mythma/8589405FastCgi程序这里使用echo-cpp。把exe复...

2015-04-13 13:21:20

阅读数 3790

评论数 0

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

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

2014-09-01 15:46:21

阅读数 9703

评论数 1

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

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

2014-05-26 10:57:28

阅读数 2610

评论数 2

原创 FFmpeg与VS2010

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

2014-05-22 09:46:27

阅读数 4427

评论数 0

原创 OpenGL Shader Key Points (3)

Shader和Program

2014-05-06 14:49:30

阅读数 1005

评论数 0

原创 误差补偿

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

2014-03-26 14:07:46

阅读数 1290

评论数 0

原创 OpenGL Shader Key Points (2)

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

2013-08-12 11:11:43

阅读数 1690

评论数 0

原创 OpenGL Shader Key Points (1)

1.  Shader起步1.1.  可编程管线仅考虑Vertex shader和fragment shader:1.2.  Shader Object在编译阶段生成,把shader源代码编译成Shader 对象。Shader对象分类Vertex ShaderFragment ShaderGeome...

2013-08-08 09:12:32

阅读数 1829

评论数 0

原创 Git错误一例

Bitbucket一直不稳定,push, pull经常失效。幸好还有goagent可以用。把git的全局配置改为走goagent代理,可以正常使用:[http] proxy = http://127.0.0.1:8087 sslVerify = false后来自作聪明把https://12...

2013-07-13 15:29:03

阅读数 1141

评论数 0

原创 提高VS2010/VS2012编译速度

除了合理的划分模块,减少link的时间外,充分利用多核编译也很重要。VS2010/2012都可以用多核编译,需要同时设置如下两个参数:Enable Minimal Rebuild Properties -> Configuration Properties -> C/C++ ->...

2013-07-08 20:44:49

阅读数 22491

评论数 1

原创 配置Windows下的Git 服务器简易教程

下载msysGitTortoiseGitWampServer2配置Git cd C:\Program Files\Git\libexec\git-core copy C:\Program Files\Git\bin\libiconv-2.dll ...

2012-11-10 17:57:24

阅读数 3293

评论数 1

原创 编程语言的编程模型

编程模型 面向过程的语言 面向对象的语言 Ruby 基于栈的语言 PostScript, Forth 基于规则的语言 Prolog 基于事实和规则查询:专家系统 基于原型的语言 Io, Lua, Self,JS 所有的对象都是另外个对象的克隆体 ...

2012-07-26 16:28:45

阅读数 2065

评论数 0

原创 印象Clang

最近打算把项目做成跨平台的,使之能够在Mac上运行。做为XCode的默认编译器,据说Clang的编译速度很快,所以决定第一步就需要玩起Clang来。 在编译的过程中遇到不少问题,整理了如下几点: 编译速度 跟传说中的一样,确实很快。 错误提示 Clang的提示比cl精准一些,尤其...

2012-07-22 17:47:31

阅读数 1323

评论数 0

原创 一起复习几何(4)

曲线和曲面的局部属性

2011-04-02 17:17:00

阅读数 1334

评论数 0

原创 基于OpenGL的渲染引擎

相比D3D,OpenGL最大的好处就是可以支持多个平台,程序部署起来也相对容易。 在一个Shader大行其道的年代,渲染引擎不支持shader似乎就太说不过去了。 但有那么多的显卡、尤其是集成显卡就是不支持OpenGL3.0+,比如Intel的集成显卡。

2011-03-18 13:48:00

阅读数 4193

评论数 0

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