摘要:OIS几个重要的类的使用一 OIS的简介: OIS有很多的类,头文件也10多个,很多人一到就蒙了,其实不然,虽然头文件很多,但是都很简单。#include "OIS.h" 包含了所有用到的头文件,使用OIS时,只要包含这一个就行了。#include "OISPrereqs.h" 一些平台选择和编译器的处理,还有一些简单的定义,不用管。#include "OISInterface.h" 接口的说明,没有什么重要东西,了解而已。#include "OISException.h" 异常的处理,编译程序时自动处理,不用管。
阅读全文
摘要:本文编写了一个简单能产生除数为0异常的程序,让其运行,产生崩溃,通过drwtsn产生dmp文件,然后通过windbg分析dmp文件,定位程序bug。目的:学习windbg基本功能使用。程序源代码:voidCrash(void){inti = 1;intj = 0;i /= j;}voidmain(void){Crash();}编译环境:vc++6.0编译器设置:这一步设置,要求对release版本不使用优化,如果使用优化,上面源代码中Crash(void)函数将不被汇编。这一步设置,产生release版本的调试符号表,为后续定位错误准备。步骤:1、 安装drwtsn32用户可以通过drwtsn
阅读全文
摘要:面向对象的输入系统(Object-Oriented Input System(OIS) )简介使用OIS1、创建常规的Windows窗口源代码下载2、初始化OIS和常用输入设备 1、包含OIS库 2、创建输入输出设备管理器 3、创建键盘、鼠标输入设备 4、删除OIS系统,释放对应的资源3、使用OIS,返回输入设备的状态源代码下载文档下载简介OIS是一个面向对象的输入系统,理论上它可以支持任何输入设备,其中最主要的三类是键盘、鼠标和游戏控制器。OIS是一个开放源码的项目,你可以按你的要求定制它,以满足你的需求。使用OISOIS系统必须初始化,然后才能使用,下面我们来一一介绍。在介绍OIS的初始化
阅读全文
摘要:由于新项目动工,UI方面需要确定方向,所以最近纠结于各种解决方案的选择。以下是对各方案的比较,仅供参考,希望对同样纠结于此的朋友有所帮助:)1.沿用当前的UI公司是从2D游戏起家的,2D游戏本身就相当于一套庞大的UI,所以这方面有所积累。这套UI系统至少是经过几十万玩家测试,稳定性自然不必说,而且移植到 3D游戏后,绕过Ogre,使用DX直接绘图绘文字,速度非常快,而且文字可以轻松实现多种字体,以及加粗、斜体、下划线等效果,所以继续沿用似乎是比较好的选择。但是它同样存在问题,因为一方面UI脚本机是我们自己实现的,当时为了跨平台(移动设备)没有使用Lua,phyon等,所以脚本像汇编写起来也比较
阅读全文
摘要:在您决定开发 Windows 提供的常规免费自定义控件范围之外的控件之后,您必需确定自己的控件将有多少独到之处 — 在功能和外观两方面。例如,我们假定您正在创建一个类似于计速表的控件。由于公共控件库 (ComCtrl32.dll) 中没有类似的控件,您完全需要自己进行以下操作:编写所有控件功能需要的代码,进行绘制,默认终端用户的交互,以及控件与其父窗口之间需要的任意消息处理。(#add 两方面,公共控件库中没有类似的 完全重写; 只想调整公共控件功能,则可以部分修改) 另一方面,还包括一些您只想调整公共控件功能的情况。例如,我们假定您想创建一个屏蔽编辑控件,它只允许接受指定的字符。如果使用 .
阅读全文
摘要:一、Gamebryo的基本构成及其工作流程 Gamebryo是一款便捷且易上手的开放式跨平台游戏开发引擎,他整合了多家当今的成熟技术。图01说明了Gamebryo的基本构成和技术特点。我们随后对其中的主要技术特点做简单的介绍。Gamebryo的基本构成和技术特点 那么,Gamebryo中的技术是如何在开发游戏中发挥作用的呢?图02演示了使用Gamebryo的工作流程。Gamebryo的工作流程 从图中可看出,Gamebryo为当今主要的DCC工具(MAX、Maya、XSI),它都提供了游戏所需资源的导出插件。这些导出插件的用户界面简单、方便且易使用。美术人员可轻而易举地设置导出环境。从而...
阅读全文
摘要:一、单一职责原则:英文名称是Single Responsibility Principle,简称SRP。有且只有一个原因引起类的变更。There should never be more than one reason for a class to change. 例如在电话类的设计中,接口包含三个方法:拨号,通话和挂电话。但是这个接口包含了两个职责,拨号和挂电话属于协议管理,通话属于数据传输。不符合单一职责原则。可以将拨号和挂电话作为一个接口,通话作为一个接口,一个类实现了这两个接口,把两个职责融合在一个类中,对外公布的是接口,而不是实现类。优点:类的复杂度降低,提高了可读性,可维护性,降低
阅读全文
摘要:在城市中,我们估算两点之间的距离时,往往不会直接去测量两点之间的直线距离,而会去考虑它们相距多少个街区。在理想模型中,假设每条道路都是水平或者竖直的,那么只要你朝着目标走(不故意绕远路),不管你怎样走,花费的路程都是一样的。今天,我看到了一个非常有意思的名词——出租车几何学 (taxicab geometry) ,其名称就来源于这样的想法。 在出租车几何学中,点还是形如 (x, y) 的有序实数对,直线还是满足 a x + b y + c = 0 的所有 (x, y) 组成的图形,角度大小的定义也和原来一样。只是,(x1, y1) 和 (x2, y2) 的距离重新定义为了 |x1- x2| +
阅读全文
摘要:1 doxygen是大名鼎鼎代码文档工具。下载地址:www.doxygen.org安装它。http://www.stack.nl/~dimitri/doxygen/download.html可下载.2 Graphviz这个工具配合doxygen使用,可以提取函数,模块之间的调用关,非常清晰。下载地址:http://www.graphviz.org/Download..php下面是Graphviz提取出来的一些关系图:3 htmlhelp这个工具把doxygen生成的html文件,转化为一个CHM文件,看起来方便些。下载地址:http://www.microsoft.com/downloads/
阅读全文
摘要:矢量的概念: 如果一条线段的端点是有次序之分的,我们把这种线段成为有向线段(directed segment)。如果有向线段p1p2的起点p1在坐标原点,我们可以把它称为矢量(vector)p2。矢量加减法: 设二维矢量P = ( x1, y1 ),Q = ( x2 , y2 ),则矢量加法定义为: P + Q = ( x1 + x2 , y1 + y2 ),同样的,矢量减法定义为: P - Q = ( x1 - x2 , y1 - y2 )。显然有性质 P + Q = Q + P,P - Q = - ( Q - P )。 矢量叉积: 计算矢量叉积是与直线和线段相关算法的核心部分。设矢...
阅读全文
摘要:1. Textures and Data Resource Formats 一个2D纹理,就是一组数据的矩阵。一个典型的2D纹理就是一张2D图片。在2D图片中,每一个元素保存着像素的颜色。1D 纹理可以认为是1为数组, 3D纹理可以认为是3维数组。一个纹理,它是不能存储任何格式的数据的,它只能存储一个类型的格式的数据。这些类型在DXGI_FORMAT中列出来。 如:DXGI_FORMAT_R32G32B32_FLOAT:每一个元素有3个32位的浮点型点。DXGI_FORMAT_R16G16B16A16_UNORM:: 每一个元素有4个16位的数组成, 这些数在[0, 1] 范围内浮动。2. d
阅读全文
摘要:在windows系列上做编程,gdi是一个很重要的技术点,有很多程序在运行多次后出现异常,除了众所周知的内存泄露以外,gdi资源泄露也是一个很直接的原因.今天就把我自己在编程中总结的一些经验给大家分享,欢迎高手补充.1.Create出来的gdi对象,一定要用DeleteObject来释放,释放顺序是先Create的后释放,后Create的先释放.这里的Create指的是以它为开头的gdi函数,比如,CreateDIBitmap,CreateFont等等,最后都要调用DeleteObject来释放.2.Create出来的dc要用DeleteDC来释放,Get到的要用ReleaseDC释放.3.确
阅读全文
摘要:三、递推法递推法是利用问题本身所具有的一种递推关系求问题解的一种方法。设要求问题规模为N的解,当N=1时,解或为已知,或能非常方便地得到解。能采用递推法构造算法的问题有重要的递推性质,即当得到问题规模为i-1的解后,由问题的递推性质,能从已求得的规模为1,2,…,i-1的一系列解,构造出问题规模为I的解。这样,程序可从i=0或i=1出发,重复地,由已知至i-1规模的解,通过递推,获得规模为i的解,直至得到规模为N的解。【问题】阶乘计算问题描述:编写程序,对给定的n(n≤100),计算并输出k的阶乘k!(k=1,2,…,n)的全部有效数字。由于要求的整数可能大大超出一般整数的位数,程序用一维数组
阅读全文
摘要:给大伙介绍一个开源工具 AStyle,支持C/C++、C#、JAVA等语言,按照不同的风格格式化代码,也可以称为美化代码。用这个工具美化出来的代码与我自已的风格几乎一样,我很喜欢这个小工具,也可以很方便的集成到VS里面去。用法:AStyle.exe --style=ansi --indent=spaces=4 -M80 -k1 -p -j -D -H -c -w test.cpp--style=ansiansi C风格代码void Foo(bool isFoo){ if (isFoo) { bar(); } else { anotherBar(); }}--indent=spaces=4 缩进
阅读全文
摘要:The ability to customize the summary information for a type in the Watch and Variable windows in the Visual C++ debugger has existed for a long time, and for this reason, the feature doesn't receive a lot of coverage in new articles and books on the Visual C++ debugger. Even though the display i
阅读全文
摘要:用Ogre实现中文显示是很久远的话题了,网上最为流行的是使用CEGUI来实现,但是我用的是MYGUI。上一代2D引擎绘制中文一般采用点阵字库,文字轮廓用位(bit)保存,可以将字库做的非常小,用3D加速的2D引擎和3D引擎一般采用贴图的方式,因为多次锁定缓存再在上面画点就得不偿失了,当然也可以使用D3DXSprite,实际上使用D3DXSprite画UI效率是最高的,因为DX都替你实现了,游戏启动时注册一些字体,退出时反注册,这样就可以直接让DX画指定的TTF字体,效果非常好,唯一的缺点是提交的次数很多,在分析瓶颈时那个曲线不太好看(但是绘制的速度非常快,这个有点囧),另外D3DXSprite
阅读全文
摘要:转载请注明出自http://www.mobilegamebase.com/如下截图,是使用MyGUI实现的游戏界面,资源采用鹿鼎记的。无论效果还是效率都相当令人满意,而且除了中文显示外,我几乎没有修改MyGUI的代码,仅仅是通过修改skin配置文件就可以实现了。解释下做法:1.动画分两种,贴图动画和位置移动,Alpha渐变等动画,这两种MyGUI都已经已经实现好了,可以通过StaticImage和Controller来使用。贴图动画没啥好说的。Controller可以做任意扩展(指定路径的移动,按钮闪烁等),而且扩展起来非常方便又不至于修改MyGUI。2.自动拼接比如说做一个图片拼成的Dial
阅读全文
摘要:译者序:很久以前就知道了A*算法,但是从未认真读过相关的文章,也没有看过代码,只是脑子里有个模糊的概念。这次决定从头开始,研究一下这个被人推崇备至的简单方法,作为学习人工智能的开始。这篇文章非常知名,国内应该有不少人翻译过它,我没有查找,觉得翻译本身也是对自身英文水平的锻炼。经过努力,终于完成了文档,也明白的A*算法的原理。毫无疑问,作者用形象的描述,简洁诙谐的语言由浅入深的讲述了这一神奇的算法,相信每个读过的人都会对此有所认识(如果没有,那就是偶的翻译太差了--b)。现在是2005年7月19日的版本,应原作者要求,对文中的某些算法细节做了修改。原文链接:http://www.gamedev.
阅读全文
摘要:在做分类时常常需要估算不同样本之间的相似性度量(Similarity Measurement),这时通常采用的方法就是计算样本间的“距离”(Distance)。采用什么样的方法计算距离是很讲究,甚至关系到分类的正确与否。 本文的目的就是对常用的相似性度量作一个总结。本文目录:1. 欧氏距离2. 曼哈顿距离3. 切比雪夫距离4. 闵可夫斯基距离5. 标准化欧氏距离6. 马氏距离7. 夹角余弦8. 汉明距离9. 杰卡德距离 & 杰卡德相似系数10. 相关系数 & 相关距离11. 信息熵1.欧氏距离(Euclidean Distance) 欧氏距离是最易于理解的一种距离计算方法,源自
阅读全文
摘要:搜索引擎技术之概要预览前言 近些天在学校静心复习功课与梳理思路(找工作的事情暂缓),趁闲暇之际,常看有关搜索引擎相关技术类的文章,接触到不少此前未曾触碰到的诸多概念与技术,如爬虫,网页抓取,分词,索引,查询,排序等等,更惊叹于每一幅精彩的架构图,特此,便有记录下来的冲动,以作备忘。 本文从最基本的搜索引擎的概念谈起,到全文检索的概念,由网络蜘蛛,分词技术,系统架构,排序的讲解(结合google搜索引擎的技术原理),而后到图片搜索的原理,最终以几个开源搜索引擎软件的介绍结束全文。 由于本文初次接触此类有关搜索引擎的技术,参考和借鉴了互联网上诸多牛人的文章与作品,有不妥之处,还望诸君海涵。再...
阅读全文
摘要:一.关于GDI的基本概念什么是GDI?Windows绘图的实质就是利用Windows提供的图形设备接口GDI(Graphics Device Interface)将图形绘制在显示器上。在Windows操作系统中,动态链接库C:\WINDOWS\system32\gdi32.dll(GDI Client DLL)中定义了GDI函数,实现与设备无关的包括屏幕上输出像素、在打印机上输出硬拷贝以及绘制Windows用户界面功能。在Visual C++6.0中的头文件C:\Program Files\Microsoft Visual Studio\VC98\Include\wingdi.h和Visual
阅读全文
摘要:九月腾讯,创新工场,淘宝等公司最新面试三十题(第171-200题)引言 曾记否,去年的10月份也同此刻一样,是找工作的高峰期,本博客便是最初由整理微软等公司面试题而发展而来的。如今,又即将迈入求职高峰期--10月份,而本人也正在找工作中,所以,也不免关注了网上和我个人建的算法群Algorithms1-12群内朋友发布和讨论的最新面试题。特此整理,以飨诸位。至于答案,望诸位共同讨论与思考。最新面试十三题 好久没有好好享受思考了。ok,任何人有任何意见或问题,欢迎不吝指导:五只猴子分桃。半夜,第一只猴子先起来,它把桃分成了相等的五堆,多出一只。于是,它吃掉了一个,拿走了一堆; 第二只猴子起来一看.
阅读全文
摘要:初期:一.基本算法:(1)枚举. (poj1753,poj2965)(2008-10-27Done 位运算+宽搜)(2)贪心(poj1328,poj2109,poj2586)(3)递归和分治法.(4)递推.(5)构造法.(poj3295)(6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996)二.图算法:(1)图的深度优先遍历和广度优先遍历.(2)最短路径算法(dijkstra,bellman-ford,floyd,heap+dijkstra)(2008-08-29Done)(poj1860,poj3259,poj1062,poj2253,poj1125
阅读全文
摘要:大于1且不是素数的数成为合数;除了1以外的每一个正整数都是素数的乘积;n要么是素数,要么n有大于1的且小于n的因子;设m是这些因子中最小的一个,那么m必为素数;因此n要么是素数,要么可以被一个小于n的素数(p1)整除;在后一种情形中,有n=p1*n1,1<n1<n;这里n1要么是素数,要么n1可以被一个小于n1的素数p2整除,此时n=p1*n1=p1*n1*n2,(1<n2<n1<n);重复这个方法,得到一列递减的数,n,n1,n2,n3,n4,……nk-1,........它们都大于1,对其中每个数都同样有以上两种可能性成立,但迟早我们必定会接受第一种可能性,此
阅读全文
摘要:N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球a开始到气球b依次给每个气球涂一次颜色。但是N次以后lele已经忘记了第I个气球已经涂过几次颜色了,你能帮他算出每个气球被涂过几次颜色吗?#include <cstdlib>
#include <iostream>
#include<algorithm>
#include<cstdio>
#include<string.h>
#include<string>
usin
阅读全文
摘要:本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://infoq.com/cn/news/2011/09/RAD-Studio-XE2继去年8月30日发布XE产品线到现在已经过去一年多的时间了,Embarcadero正准备发布其新版本的RAD Studio XE2工具,其中包含了Delphi XE2、C++Builder XE2、RADPHP XE2及Prism XE2。此次发布带有很多新特性,最引入关注的莫过于对跨平台开发、Windows 64位、Amazon Cloud API、Native Android与iOS及HD与3D动画的支持了。长久以来,众多Windows开发者都
阅读全文
摘要:本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2011/09/Future-of-Flash-and-FlexAdobe想要强化Flash与Flex在企业,特别是在移动领域中的地位。但最近的一项调研表明jQuery已经超越了Flash,成为前17,000个网站首选的Web部署解决方案。近日,来自Adobe Systems开发工具事业部的产品经理Andrew Shorten在Adobe的官方博客上发表了一篇博文,谈到了Flash与Flex的当前状态,并就Adobe的旗舰平台给出了自己的一些看法。Shorten承认虽然Flash曾是
阅读全文
摘要:互质就是两个数的最大公约数是1;欧拉函数是不大于n的数中与n互质的数的数目;φ函数的值 通式:φ(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn),其中p1, p2……pn为x的所有质因数(互不相同),x是不为0的整数。φ(1)=1(唯一和1互质的数就是1本身)。若n是质数p的k次幂,φ(n)=p^k-p^(k-1)=(p-1)p^(k-1),因为除了p的倍数外,其他数都跟n互质。如果n是质数φ(n)=n-1;
阅读全文
摘要:1:何为序列式容器,C++标准程序库上面是这样说的:此乃可序(ordered)群集,其中每个元素均有固定的位置—取决于插入时机和地点,和元素的值无关。如果以追加方式对一个群集置入六个元素,它们的排列次序将和置入次序一致。STL提供三个定义好的序列式容器:vector,deque,list;vector的相关操作:vector将其元素置于一个dynamic array// vector assign
#include <iostream>
#include<algorithm>
#include <vector>
using namespace std; in
阅读全文
摘要:引用&;例如int a;int &b=a;就是相当于给变了量a起了一个别名;对b的操作就相当于是对a的直接操作;常引用就是在 const int &b;就不能再通过b对a进行操作啦;b=1//错误;a=1;//正确;引用函数返回值#include <cstdlib>
#include <iostream>
float tp;
using namespace std;
float fn1(float r)
{float tp=(float)(3.14*r*r); return tp;
}
float &fn2(float r)
{ tp=3
阅读全文
摘要:内联函数从源代码层看,有函数的结构,而在编译后,却不具备函数的性质。编译时,类似宏替换,使用函数体替换调用处的函数名。一般在代码中用inline修饰,但是否能形成内联函数,需要看编译器对该函数定义的具体处理。内联函数的使用:对于一些功能简单,规模较小的有使用频繁的函数,可以设计为内联函数,内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处,这样就节省了参数传递,控制转移等开销;
阅读全文
摘要:250分的题目意思很容易就知道;给出一个h*m的矩形区域刚开始都是白色的;白色的能变黑,黑色不能变白;每次只能改变某一行或某一列;给出一个目标状态;问由初始状态到目标状态;最少要多少步能完成;题目分析:只要找出一共有多少行是黑色的;再找出有多少列是黑色的;黑色的行数加黑色的列数就是结果;class MonochromaticBoard
{ public: int theMin(vector<string> board) { int n=board.siz...
阅读全文
摘要:vector<int> bits(32,0);
int N;//将N换为二进制放在bits中
for(int i=0;i<32;i++) if(N&(1<<i)) bits[31-i]=1;int res=;
for(int i=0;i<32;i++)//将二进制转化为十进制 if(bits[i]) res+=bits[i]<<(31-i);
阅读全文
摘要:为什吗会写这么一篇文章那,因为昨天晚上我们四个人第一次参加TopcoderSRM赛,结果不用想自然是很杯具的,首先,我们是业余级别的,而且还是菜鸟级的我们,,更加称不上是Topcoder,我们也是刚刚搞ACM,而且实力很弱;昨天我们队里面的琴姐过生日,说好八点开始的,匡匡和蓓蓓他们去买生日蛋糕回来有点晚,所以耽误了一会;快九点我们开始生日庆祝的;博文给老大打的电话让他也过来啦;因为几天晚上原来定的是要开会的;刚好要给琴姐过生日;又加上我们要比赛;真是皆大欢喜;Jie,Yang让Jie Qin说两句明显JieQin很是激动,感觉大家都很忙能抽出时间给她过生日很是激动;她说到这时我也感觉到大家一直
阅读全文