摘要: 需要include头文件 "bmgdll.h"; 1、生成HFONT句柄,CreateFont 2、生成DC句柄,CreateCompatibleDC 3、将字体制定到设备上下文,SelectObject 4、设置DC的显示色和背景色,SetBkColor SetTextColor 5、TrueType字体的字符轮廓或位图,GetGlyphOutline 最后保存文件,使用 SaveUpackedArray或其他 阅读全文
posted @ 2011-12-27 18:04 阿亮同学 阅读(382) 评论(0) 推荐(0) 编辑
摘要: nav,即navigation,现行3D游戏主流寻路方式,起源的思路是和A*完全不同的,因为navmesh不需要一张二维表,只需要利用模型阻挡生成一张近似寻路用的“mesh”。 细节不多提及,参见http://www.ai-blog.net/archives/000152.html中的示例, A*寻路中,可以借用他的思想做出效果非常好的优化,在游戏中测试512×512的寻路速度在几个毫秒内即可完成。 在生成阻挡点信息时,将整块没有阻挡点的凸多边形(这里全部使用四边形)合并为一块navmesh,生成若干mesh再使用navigation思路进行首次路径生成。测试512×512 阅读全文
posted @ 2011-12-26 12:44 阿亮同学 阅读(9026) 评论(0) 推荐(0) 编辑
摘要: Fomd的3D音源可以通过setMode来制定sound或channel曲线,具体表现效果由mindistance和maxdistance两个参数决定,它们可以用Sound::set3DMinMaxDistance或Channel::set3DMinMaxDistance设置。 指数衰减:用FMOD_3D_LOGROLLOFF指定。在这种衰减方式中,声音每隔mindistance就会减弱一半,超过maxdistance就不再衰减。(SDK中并没有说明这种衰减函数,按照描述,可知并非log曲线,而是双曲线,y=1/x) 线性衰减:就是由maxdistance和mindistance定义一... 阅读全文
posted @ 2011-12-08 18:51 阿亮同学 阅读(1181) 评论(0) 推荐(0) 编辑
摘要: SYSTEMTIM结构typedef struct _SYSTEMTIME { WORD wYear; WORD wMonth; WORD wDayOfWeek; WORD wDay; WORD wHour; WORD wMinute; WORD wSecond; WORD wMilliseconds;} SYSTEMTIME, *PSYSTEMTIME;调用Api:SYSTEMTIME nowtime;GetLocalTime(&nowtime); 阅读全文
posted @ 2011-12-08 18:41 阿亮同学 阅读(897) 评论(0) 推荐(0) 编辑
摘要: from:http://job.17173.com/content/2009-08-19/20090819181147996,1.shtml前言 一部又一部的游戏大作降临,每个游戏都声称要给玩家“真实”的体验。当然既然叫做游戏就不可能是真实的,但游戏制作商们都在不断想办法使游戏更加接近现实,使用各种3D效果去模拟现实中的种种现象。可能还有不少玩家朋友对这些视觉效果名词还不大了解,于是有了本文。本文就是用简单的语言,简要地介绍目前应用在游戏中的一些比较热门的视觉效果。本文说明 文章是作者在网上搜集资料,再加上一些个人语言整理而成,可能你看到某些语言、某些图片会觉得熟悉。作者尽量做到以简单的语言去 阅读全文
posted @ 2011-06-21 12:21 阿亮同学 阅读(1312) 评论(2) 推荐(0) 编辑
摘要: 在调试一处宕机时发现在某种情况下,容器导致的异常并没有产生dump文件,原因是Checked Iterator机制导致迭代器异常抛出,而未被catch捕获。(Checked Iterator是指具有越界检查功能的迭代器,并且会在检查到越界操作时触发运行时错误处理。)_SECURE_SCL如果定义为0,迭代器检查(Checked Iterator)将被禁用。事实上如果开启了迭代器检查,每次内存偏移都会调用_invalid_parameter_noinfo,导致操作更耗时,有兴趣可以在汇编中对比两者——所以,建议在编写release版本时手动关闭该宏。 阅读全文
posted @ 2011-06-21 11:41 阿亮同学 阅读(2163) 评论(0) 推荐(1) 编辑
摘要: 在优化程序时偶然看到这篇二分查找常见问题以及《算法珠玑》上的优化算法,但却并不完整.在自己程序中测试了一下,改为最终的优化版后(也就是《珠玑》上的program4),比program1能提升10%左右,这和具体运算的内容有关~。如果序列中有多个相同的元素时,查找的时候不见得每次都会返回第一个元素的位置, 比如考虑一种极端情况:序列中都只有一个相同的元素,那么去查找这个元素时,显然返回的是中间元素的位置.其次, 前面给出的算法中,每次循环体中都有三次情况,两次比较,有没有办法减少比较的数量进一步的优化程序?<<编程珠玑>>中给出了解决这两个问题的算法,结合前面提到溢出问题 阅读全文
posted @ 2011-05-08 23:30 阿亮同学 阅读(834) 评论(0) 推荐(0) 编辑
摘要: vtune需要运行在intel处理器的电脑上,在AMD上好像只能使用callgraph。调试时需要有源代码或者相应的PDB文件:pdb生成办法:打开/Zi /debug生产pdb文件,PBD只需和运行程序放在同一目录即可。分析完后,默认是按照CPU_CLK_UNHALTED排序的。需要关注的内容:Event based sampling :测程序执行中处理器的内部事件(Performance Monitor Unit:PMU)发生次数(及样本)。Sample After Value (SAV):当事件达到一定的累积,去获得一个样本. SAV就是一个事件的设定值.如,CPU得主频是2G Hz, 阅读全文
posted @ 2011-05-08 23:24 阿亮同学 阅读(967) 评论(0) 推荐(0) 编辑
摘要: 为了调试游戏,有时需要参考玩家的系统信息,试了下,发现用高精度计时器可以获得较为准确的结果。(原代码作者不详,有改动)//精确延时获得CPU频率#include <windows.h>int CPU_Frequency(void) //MHz { LARGE_INTEGER CurrTicks, TicksCount; __int64 iStartCounter, iStopCounter; DWORD dwOldProcessP = GetPriorityClass(GetCurrentProcess()); //纪录和提高优先级 DWORD dwOldThreadP = Get 阅读全文
posted @ 2011-05-08 23:16 阿亮同学 阅读(1511) 评论(0) 推荐(0) 编辑