
程序开发
潘李亮
一个苦比的程序员
展开
-
Unity矩阵变换
Unity矩阵变换原创 2023-02-15 14:45:48 · 633 阅读 · 0 评论 -
Gbuffer的法向量的压缩
BTW: 自己看到了记录一下,大家随意。原文链接:https://aras-p.info/texts/CompactNormalStorage.html1.直接存在RGB通道上。half4 encode(half3 n){return half4(n.xyz*0.5+0.5,0);}half3 decode(half4 c){return c.rgb*2-1;}2.存储法线的XY在颜色通道上,计算Zhalf4 encode(half3 n){return half4(n.xy*0翻译 2021-07-06 11:38:55 · 1078 阅读 · 1 评论 -
C# async/await 究竟是有几个线程
private async voidStart(object sender, EventArgs e) { {代码1} var ResultTask = AsyncMethod() ; {代码2} } private async Task<string> AsyncMethod() { var Res...原创 2021-06-29 20:57:38 · 785 阅读 · 0 评论 -
在ActiveX里调用html中的js函数
其实是抄的别人的代码。我改了改而已。IOleClientSite在ATL和MFC的控件类里都可以拿得到。没任何问题。#pragma once#include #include #include #include #include #inc原创 2011-07-14 05:08:09 · 1540 阅读 · 1 评论 -
OpenGL ES 模拟器的支持与比较。
OpenGL ES模拟器的动态加载 。以及多个OpenGL ES模拟器的比较原创 2011-04-21 00:46:00 · 8420 阅读 · 0 评论 -
在程序中使用3D Vision--转帖
多年前NVIDIA就发布了3D Vision技术,能提供多种立体渲染的效果。随着2009年的电影阿凡达所带来的世界性3D狂潮,你是否也想在自己的程序中加入立体渲染呢?转载 2010-11-22 11:59:00 · 3595 阅读 · 0 评论 -
字节对齐问题 --- 莫名其妙的crash
今天碰到了一个莫名其妙的crash。声明了一个对象。啥都没干。函数返回的时候,就报告栈损坏了。void save(const wchar_t* file){ xXmlDocument doc; return ;}这样就挂了。把doc改成指针,然后delete , 一样报告堆坏了。百思不得要领。打印了一下xXmlDocument的sizeof()。发现,这个函数里是124。在xXmlDocument析构函数里是128Orz...原创 2010-12-10 14:01:00 · 2879 阅读 · 8 评论 -
如何访问一个类的保护变量
如何访问一个类的保护变量原创 2010-07-25 14:06:00 · 4239 阅读 · 6 评论 -
VC++ STL中的locale问题(2)
原文发表于:http://www.hellocpp.net/Articles/Article/722.aspx 其实对我来说 ,这篇文章里要说的问题早就碰到过了。今天只是心血来潮,详细归纳一下。bug描述:在中文日文系统上创建一个中文日文名字的用户名,在这个用户的目录下创建文件失败。经过检查,发现只要文件名里带中文或者日文等非英文字符,用fstream创建文件就失败。这个问题第一次用v原创 2009-12-07 12:24:00 · 2814 阅读 · 3 评论 -
内存没有初始化和内存越界的后果
如果你发现你的程序Debug版本好好的,但是Release版本会挂。那么多半你是变量没有初始化或者是内存小规模越界了。如果你发现你的程序在调试器里好好的,独立运行会挂,那么恭喜你,99%就是变量没有初始化或者是内存越界。 这次老衲犯白痴。两件都碰上了。上集:首先的症状就是Release版本在调试器里跑的好好的,一到独立运行就挂了。用debugger attach到crash的进原创 2010-02-02 10:33:00 · 8734 阅读 · 16 评论 -
最近又犯傻了--我的傻事收集加连载
傻事年年干,只是最近干的多。这几天在做Ray Tracer , 所有的ray和面求交通通交给普通的Rasterizer来做。于是乎我干了件傻的事情。 对于需要保存float结果的buffer来说我必须要选择R32F格式的rendertarget,R32F格式的rt是不会将数据clamp到(0-1.0f)的。结果,我的模型又选择了个带alpha blending的材质,于是杯具出现了。我的场景怎么看原创 2010-01-23 02:51:00 · 1774 阅读 · 1 评论 -
www.hellocpp.net开发日记:网站性能优化之文件服务器分离技术
闲来无事跟朋友折腾了一个山寨百衲本的网站HelloCpp(http://www.hellocpp.net)。界面我们都是外行,反正基本就是活脱脱一个山寨的www.codeproject.com。不过开发过程中还是蛮有一些心得的。现在写出来跟大家分享。有不对的地方请大家多多建议。 网站性能优化之文件服务器分离技术 在WEB开发中,一个重要的性能问题是IO问题。通常,一个网站里会原创 2009-06-08 16:04:00 · 5862 阅读 · 5 评论 -
啥叫高质量的bugfix
这段时间一直在修bug。自己的bug没fix几个,天天给人分析bug。但是听的最多的就是:你们的Bugfix质量太低啊,要保证质量啊。 于是今天我就在想,啥叫高质量的Bugfix呢? 产生的side effect越少越好?改动越小越好?风险越小越好?思考后,心得如下: 其一:试想,如果你碰到一个bug,这个bug是由于设计上的缺陷引起的,但是只修了b原创 2008-12-17 10:17:00 · 6094 阅读 · 17 评论 -
废弃了两年多的骨骼动画终于又动起来了。
算了算,上次整里骨骼动画的代码要是2006年了。那会整理一坨临时的骨骼动画代码后再也没折腾过。这次D10的架子搭好后终于花了一个周末让那一大陀骨骼动画的代码重新动起来了。用D10做GPU的skin还真是简单,晚上顺手把cbuffer/tbuffer/Buffer三种模式的Bone数据传递模式都支持上了。再也不用为骨骼个数限制而烦恼了。下一步,做光照和渲染系统以下是SkinAni.h原创 2008-10-28 02:01:00 · 5422 阅读 · 14 评论 -
Node Based Shader系统基本完成,进入调试和优化阶段
Shader 系统的代码生成器基本完成。已经能组合Node来生成一个完整的shader代码现在可以用如下的语句xGpuProgNameParser _shaderNameParser;_shaderNameParser.setShaderName(eShaderType::eShader_VertexShader , L"YV12Video");xShaderCodeNodeMgr _原创 2008-10-04 19:34:00 · 2334 阅读 · 15 评论 -
说说Intel的驱动
这两年做3D Demo少了,基本被产品在折磨,虽然做的产品都没啥技术含量。不过问题倒见了一大堆。 这两天很想喷一喷的就是Intel的3D Driver问题,或者由Driver引起的问题。首先说说OpenGL的。 问题一. 最早帮朋友做的一个用OpenGL实现的实时处理视频的库,发现把一个窗口SetPosition成全屏后,在切回到原始大小后,窗口就不停的闪,在Windows XP Profes原创 2008-04-20 19:30:00 · 8835 阅读 · 26 评论 -
Android下可用的wide char 函数库
原文发布:http://www.hellocpp.net/Articles/Article/779.aspx 附件也请到这里去下载, csdn不知道怎么上传附件。如果上面的网页打不开,说明我还没找到后台管理的密码,稍后想起来了,文章审核到前台就看到了。 附件地址 ht原创 2011-08-30 01:44:35 · 2266 阅读 · 2 评论 -
属性系统-编辑器和引擎的强力粘合剂
很多时候,如果在做引擎的时候,不考虑编辑器怎么做,将来会是一件极其痛苦的事情。简单的举例如下:1. 很多物体有很多的属性要编辑,比如粒子系统的发射器属性,效果器属性。这些大量的属性,如果你没有一套很好的机制来描述的话,做编辑器的时候,将会是灾难。2. 很多时候,引擎的扩展性带来得一个问题是,物体的类型是未知的,如何在编辑器里做编辑?比如你的粒子系统的发射器类型未知,效果器未知(都是可以扩展的嘛),原创 2011-11-19 02:53:05 · 2454 阅读 · 3 评论 -
坑爹的VS 2010 RibbonBar 编辑器
手写RibbonBar的layout实在不是件快乐的事情。VS2010提供的这个RibbonBar 编辑器还是比较有用的。但是这玩意有时候很坑人。用的过程中发现几个重要bug: 编辑器Button 的ID老弄错。 比如你拖了一个button到ribbonbar上,默认是IDC_BUTTON2 。 然后你改了个名字: IDC_FUNCXX . 有一定的概率下,你的ID实际值还是IDC_BUTTON原创 2011-12-13 12:13:45 · 3494 阅读 · 3 评论 -
部署 ASP .NET CORE 服务器端安装软件步骤问题
部署.NET CORE网站的时候,装东西死活不成功,后来据说要这样严格按照顺序装dotnet-runtime-2.0.5-win-x64.exe dotnet-sdk-2.1.4-win-x64.exe DotNetCore.2.0.5-WindowsHosting.exe...原创 2018-09-14 19:01:33 · 1126 阅读 · 0 评论 -
VC++的LNK1102 error out of memory 问题
前几天把引擎的代码切换到VS2015下来了。光试了试X86的编译。今天因为内存问题试了试X64。发现竟然链接不过。一链接就报告 LNK1102 error out of memory 或者就死在链接的时候不动了。尝试多种配置均不行。最后发现MS竟然默认是使用x86 cross tool来编译x64的代码的。而且IDE里没找到配置修改成x64 native compiler的地方。具体做法是打开v原创 2016-03-15 12:49:08 · 16558 阅读 · 0 评论 -
VC++的一个奇怪的C2732错误
原来编译都正常的(ScaleForm 3.3的代码)升级了VS2015编译后,就出问题了。nvtt编译错误如下:1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\stdarg.h(20): warning C4005: 'va_copy': macro redefinition1> d:\sdk\gfx sdk 3.原创 2016-02-23 00:22:06 · 14042 阅读 · 2 评论 -
Android 菜鸟这两天踩过的坑
填了的坑1. Splash Activity的问题: 每个应用都有个Splash。 然后主要的界面放在另外一个Activity里。以我菜鸟的理解。如果想让整个主要的Acitivty(就叫HomeAcitivty吧)只有一个,应该将launchMode设置成 singleInstance ( 额。。我当时没看还有个singleTask) 。 然后就悲剧了。每次按了Home回到桌面。再启动原创 2015-12-04 17:22:46 · 10476 阅读 · 0 评论 -
iOS真机上的EXC_ARM_DA_ALIGN问题
有这么3个变量。std::hash_map meshPool;R3DMesh* pMesh;const wchar_t* _name = L"Hello";如果我问你这样写:meshPool.insert(std::hash_map::value_type(_name, _mesh));和meshPool[name] = _mesh;这样写的区别的话,我想你一定能说上一大堆的区别。其实我也能。但原创 2015-07-30 17:37:22 · 10960 阅读 · 0 评论 -
Android 模仿C# WPF的Dispatcher的UI同步调用
PS: 我是个Android土鳖,学Android才不到两个月,有槽点就尽情吐吧。--------------我是分割线--------------------------------------------------------------我们知道WPF (WinForm)的UI操作是不能在UI主线程以外进行的。但是WPF和Winform都有比较方便的代码写法来支持这个调用。比如this.Di原创 2015-07-16 10:24:23 · 10437 阅读 · 2 评论 -
CoD系列游戏资源提取工具
http://www.diegologic.net/diegologic/不解释。原创 2013-07-11 02:48:26 · 13906 阅读 · 0 评论 -
DX11的陷阱?
这两天重新把延迟渲染的shader重新移回到DX11下。碰到以下恶心的事情(当然,DX9恶心的事情更多,但凡是恶心的东西,都要吐槽以下)。---------------------------------------------1. DX11对Shader之间的linkage更加严格,当然这个有助于你的shader正确,只是Debug的改那一堆东西十分讨厌。2. for循环的小心用。第一次碰到原创 2012-07-26 01:54:39 · 11334 阅读 · 0 评论 -
DevExpress做的新的编辑器界面。
DevExpress的快速开发能力还是挺强大的。新版本的编辑器,零零碎碎也就一个多点月时间。真正做的时间一个礼拜也就多点点时间。看上去效果还是不错的。只是这玩意新版本破解比较难下。刚在某个论坛里下个12.1.4的。不知能不能用的。不过这里资源还是比较丰富的。推荐一下。http://smartsoft.5d6d.net/?fromuid=23261原创 2012-07-13 13:48:05 · 5914 阅读 · 0 评论 -
淡水河边的夕阳-台北印象
淡水河边的夕阳 原由 做梦的多啦A梦 上載 这次台北之行比较轻松。工作上的事情也谈的比较顺利,只是没想到有这么顺利,所以也没好好的计划一下在台北的两天周末时间如何安排。周六匆匆起来,跑去看101,结果天气又不好,周日天晴却发现又太累了。实在可惜。 到台北感触最深的就是自然环境比北京好的多,虽然不是富丽堂皇但却非常整洁,加上冬天适宜的温度,住在那里非常的舒服。乱丢垃圾的人相对也比较少原创 2007-12-15 14:46:00 · 5811 阅读 · 2 评论 -
均衡器代码
最近在做均衡器,上网找了一堆,但是能方便使用的很少。大部分都是直接MP3出来后就来一个EQ,一个功能的代码散落在各个角楼里,很难整理。 还好有xmms这个eq插件,感谢开源的奉献精神,原来的代码是在linux的,我把其中跟均衡相关的都抽出来了。开源帮助了我,我整理的资源也希望能帮助到大家使用只要包含eq.h就可以了。eq的值从-16到16比较好。0为平衡点 -----------原创 2008-03-05 15:57:00 · 7735 阅读 · 17 评论 -
C++ Template在g++ 4.1和vc8/9之间的一些区别----强悍的VC
好久没有在Linux下编译我的代码了。其实最头疼的就是模板的移植性问题。记得上次把我的资源管理器移植到公司的Linux项目上的时候就花了我很多时间来协调VC和GCC在模板支持上的一些区别。因为我不是一个语言爱好者。并没有深入的研究过C++模板的规范化代码,所以下面的这个跟头仅用于教训我自己: 一: template class TBase {原创 2008-02-26 01:29:00 · 7424 阅读 · 12 评论 -
基于策略的泛型资源管理器-初步思考
资源管理器的作用在游戏开发和其它应用里是非常有用的。 设计资源管理应该做到通用。一般做法是采用单根继承的资源对象。就是所有的对象都需要从单根派生。这样的做法不是特别灵活(好处是做成动态连接库的时需要注意的东西比较少)。 所以我比较喜欢的是使用模板。模板唯一的缺点就是做动态库比较恶心(这个恐怕只有做过的人才能体会。),但是基于基于模板的管理器类处理各种需要变化的算法原创 2006-07-03 01:54:00 · 2051 阅读 · 0 评论 -
string使用需要注意的地方。
昨天晚上又碰到debug不挂。release挂的情况。挂在我的log函数里.仔细检查发现代码写成这样了。string fileName="simple.vs";XR_LOG(100,"Loaing XML=%s/n", fileName); 这样的代码在Debug下竟然是好的!!!!顺手改成XR_LOG(100,"Loaing XML=%s/n", fileName.c_str() ) ;一切搞定原创 2006-11-10 11:40:00 · 2352 阅读 · 0 评论 -
Bug经典回放(三)
Continue三) 去年最经典的Bug 这个Bug的父亲不是我,是我的一个同事, 不过最终bug是被我抓到,也算是非常经典的一个bug,. 当时我在SBXF开发那个该死的休闲游戏.大家知道动态加载的资源的I/O操作需要消耗大量的时间,如果在游戏正常运行中,突然出现许多需要加载的资源,并且不对其进行处理的话,显然会造成游戏的"卡",也就是画面突然停顿的现象.解决这种方法,最容易想到就是原创 2006-06-28 13:44:00 · 2795 阅读 · 1 评论 -
Bug经典回放(二)
continue....二)今年最经典的bug。准确的说。我还不知道这个是谁的bug。bug的发现是源于给别人做的一个外包程序。这是一个OpenGL应用程序。初始化代码是我写于2001年。并且一直沿用到现在的代码。可以所是酒精考验了。我从来没有怀疑这样的代码会出现问题。症状如下:该程序在以前的机器上没有什么问题,运行十分流畅而且也非常稳定。年初突然接到朋友报告说,程序在新的机器上出现了问题。速原创 2006-06-26 20:25:00 · 3814 阅读 · 1 评论 -
Bug经典回放(一)
写程序有些年头了,Bug是从来都没有荒废过, 唯一不同的是刚开始写程序的时候,bug都比较简单.而伴随着年龄的增大,岁月的磋跎.Bug也越来越狡猾了. 当然bug分很多种,有程序设计上的bug,算法设计上的bug,还有架构设计上的bug.后两种bug不是一时半会讲的清楚的. 这里就讲讲程序设计上因为"不慎"而碰到的bt事情吧.一): 本月经典bug. 做游戏做的累了,就跑出来做应用软件原创 2006-06-26 11:22:00 · 2896 阅读 · 2 评论 -
C++ template 语法需要注意的问题!
最近使用C++ template不是很多. 却需要在多个编译器上进行编译. 开发的时候我的开发环境为Visual Studio 2005. 编译当然是vc++2005了.编译我的几个模板没有出现过问题.后来,程序需要在g++多个版本下编译. g++3.x的没有问题.但是到了g++-4.0下却出现多个恶心的编译错误.现在一一列出,希望给后来者提供些线索.1. template class frien原创 2006-06-19 21:15:00 · 3700 阅读 · 1 评论 -
Mozilla XULRunner 的编译。
Mozilla XULRunner 的编译。潘李亮 2006-10-31Mozilla里有很多好东西。 比如那个js引擎和嵌入式渲染引擎。这段时间在想如果能在游戏里嵌入一个浏览器该多好啊。这个想法用mozilla的渲染引擎来实现在再好不过的了。Mozilla的渲染引擎叫xulrunner。它和firefox 用的是同一个代码树,也就是说在编译的时候指定不同的选项就可以编译出xulrunner和原创 2006-11-01 15:58:00 · 9031 阅读 · 2 评论 -
GUISystem设计思路之三:HotArea的概念。
很多时候,我们希望有些GUI的toolbar能自动消失。这个可以通过循环检测来实现。还有些时候 我们希望鼠标在某个区域动一下或者点一下就让消失掉的toolbar能自动显示出来。或者在一个窗口以外的地方点击的时候就能让窗口自动关闭。这个时候,我们去生写代码显然是不合适的。我在GUI里引入一个很简单的HotArea的概念。称为鼠标热区。热区和某个具体窗口想关。这个热区有以下属性: 一:什么时原创 2006-10-30 12:45:00 · 2421 阅读 · 0 评论 -
GUI设计思路之二:Blender -- WinstateBlender/WinTransBlender
现在很多GUI的窗口在显示的时候,都有淡入和淡出的效果. 或者是飞入/飞出的效果(是叫飞入飞出吗?呵呵.). 也就是说1:可以自由控制窗口在两个状态间进行融合. 2: 能自由控制窗口的变换--旋转和缩放等. 为此我把窗口独立成一个个状态:struct _XUI_API_ xuiWindowState_t{ char原创 2006-10-29 11:58:00 · 3564 阅读 · 0 评论