2011年8月26日

摘要:这里指的是对release版本的程序发布出去之后crash的处理。这里有一强文总结的非常完整:http://www.cppblog.com/Walker/articles/146153.html, 收集minidump应该是大多数人的方案。其中提到的google breakpad:http://code.google.com/p/google-breakpad/相当之强大,提供了一整套跨平台的解决方案,这里有一个不错的入门资料:http://bigasp.com/archives/450。对于windows上的,这里还有一个轻量级的实现:http://code.google.com/p/cra 阅读全文
posted @ 2011-08-26 12:33 konlil 阅读 (312) 评论 (0) 编辑

2011年8月16日

摘要:zeromq是个好东东http://www.zeromq.org/ 阅读全文
posted @ 2011-08-16 10:31 konlil 阅读 (141) 评论 (0) 编辑

2011年8月14日

摘要:如果把渲染引擎看做一个画家,那么画家开始作画之前需要做一系列的准备工作,譬如:布置好场景,摆好画架,钉好画布,调整好灯光,准备号画笔油彩,站好位置,然后才能开始下笔作画。前期的这一系列准备过程在d3d和ogl这样的渲染api中对应了一系列的接口函数,这些函数初看起来又多又乱,有时调用顺序还有一定的耦合,性,因此需要精心的组织这些接口,一种比较好的方法是将这些接口组织成一个叫做渲染上下文(rendering context)的类。这个类中具体包含哪些东西呢,罗列起来可以有这些:1. 视图设置相关(正交/投影,视口参数设置)2. 绘制缓冲相关(创建删除缓冲,绑定缓冲,设置当前缓冲,清除缓冲,设置背 阅读全文
posted @ 2011-08-14 22:18 konlil 阅读 (390) 评论 (0) 编辑

2011年8月4日

摘要:编辑文件:【VS安装目录】/Common7/Packages/Debugger/autoexp.dat,在文件最后[hresult]之上的空白插入以下代码,就可以在 visual studio调试的时候看到lua的调用栈、变量信息了lua_State { preview ( #( "thread top=", [$c.top-$c.base, i] ) ) children ( #( [raw members]: [$c,!], globals: [$c.l_gt], registry: [$c.l_G->l_registry], stack size: [$c.to 阅读全文
posted @ 2011-08-04 13:41 konlil 阅读 (962) 评论 (0) 编辑

2011年7月12日

摘要:因为Alpha混合不一样,d3d渲染物体到RenderTarget再渲染到Screen的过程和把物体直接渲染到Screenbuffer中并不对等。具体为什么不对等,这里说的很详细。这样的话,有些2d游戏需要利用3d渲染的能力实现换装的过程就可能产生下面的一个问题:角色的半透明披风与身体重叠区域B会呈现不正确的半透明状态,露出地表。产生这个问题的原因就是2d游戏需要先将3d资源渲染到RenderTarget,然后再应用到已有的2d sprite渲染引擎中;因为渲染到RenderTarget时,如果按照默认的alpha混合方式,D3D会对颜色通道和alpha通道执行相同的混合策略,因此如上图,角色 阅读全文
posted @ 2011-07-12 20:50 konlil 阅读 (1421) 评论 (0) 编辑

2011年7月6日

摘要:32位浮点数在机器中的表示按照IEEE的标准是这样的: +------+----------------+-------------------------------+ | 1bit | 8bit | 23bit | +------+----------------+-------------------------------+其中:1bit表示符号位(0表示正,1表示负),8bit表示指数(0~255,实际指数取值还要减去127,即指数取值区间为-127~128),23bit表示尾数。这里所要说的浮点异常值就是这种表示产生的几种特殊值,IEEE规定根据指数和尾数的不同分别可表示如下几种特 阅读全文
posted @ 2011-07-06 23:35 konlil 阅读 (44141) 评论 (3) 编辑

2011年7月5日

摘要:经常遇到一很郁闷的事情:发布给外部客户使用的程序crash了,把dump文件丢过来,对上pdb之后发现显示的调用栈莫名奇妙,或者是一个stl::vector的push_back调用,要么是在一个malloc分配内存或者new创建对象,甚至可能是一个字符串赋值;这些从代码上看怎么看都不应该导致程序crash的,这时候一般就是程序写内存越界,堆被破坏,导致显示的调用栈异常了。怎样才能确定导致程序异常的实际代码行呢?用windows的debug tools中的global flags即gflags就可以了。gflags工作的时候,可以在用户每次分配内存的时候都在要分配的内存后边紧跟着分配一个保护区间 阅读全文
posted @ 2011-07-05 22:27 konlil 阅读 (4150) 评论 (0) 编辑

2011年7月4日

摘要:1.ls不能显示中文目录 解决办法:在[git安装目录]/etc/git-completion.bash中增加一行: alias ls='ls --show-control-chars --color=auto' 2.git commit不能提交中文注释 解决办法:修改[git安装目录]/etc/inputrc中对应的行: set output-meta on set convert-meta off 3.git log无法显示中文注释 解决办法:在[git安装目录]/etc/profile中增加一行: export LESSCHARSET=iso8859 阅读全文
posted @ 2011-07-04 10:51 konlil 阅读 (338) 评论 (0) 编辑

2011年6月27日

摘要:1. dump文件和pdb文件的匹配问题>> 发布二进制文件时生成的pdb文件一定要保留,只有当发布的二进制文件和pdb文件是同时生成的才好正确调试。2. dump文件和pdb文件放在哪里的问题>> 如果dump文件和pdb文件放在同一个目录,则可直接运行调试;当然也可以不是同一个目录,那么在启动dmp文件后,需要设置一下vs的符号文件路径:Tools->Options->Debugging->Symbols. 如果需要调试windows自带的一些dll或者exe,则可以在这里添加windows的pdb文件服务器:http://msdl.microso 阅读全文
posted @ 2011-06-27 22:26 konlil 阅读 (4056) 评论 (0) 编辑
摘要:1. 在bluehost上搭建git服务器Step1:查bluehost操作系统版本, 一般都显示Red Hat x.x.x >> cat /proc/versionStep2:下载git安装包 >> wget http://kernel.org/pub/software/scm/git/git-1.7.5.4.tar.bz2注意:要到http://kernel.org上去查最新的git latest stable版本号,然后拼出地址Step3: 解压安装 >> tar -xjvf git-1.7.5.4.tar.bz2>> cd git-1.7 阅读全文
posted @ 2011-06-27 22:23 konlil 阅读 (570) 评论 (0) 编辑

导航

统计