01 2011 档案
摘要:转向.NET后,手头上往往仍有旧的模块要重用。也许这些模块是Delphi写的,也许是C/C++写的,或者是其它编程语言……为了能把它们移植到.NET下,或者是在.NET中调用,To be or not to be, that is a question。 在这里,我笔记了几个在工作中遇到的几个场景。不过,这里不包括完全使用C#来重写原来用C++编写的程序这种变态的需求。当你被要求做这种事的时候,请三思而后行……这简直是种非人的折磨。您也使用托管C++吗? 如沐枫林 场景一:在.NET中调用WindowsAPI或DLL。 这是比较普遍的需求。一般来说,简单的函数调用,大可直接用C#/VB
阅读全文
摘要:Lua脚本语法说明(增加lua5.1部份特性) Lua 的语法比较简单,学习起来也比较省力,但功能却并不弱。 所以,我只简单的归纳一下Lua的一些语法规则,使用起来方便好查就可以了。估计看完了,就懂得怎么写Lua程序了。 在Lua中,一切都是变量,除了关键字。I. 首先是注释 写一个程序,总是少不了注释的。 在Lua中,你可以使用单行注释和多行注释。 单行注释中,连续两个减号"--"表示注释的开始,一直延续到行末为止。相当于C++语言中的"//"。 多行注释中,由"--[["表示注释开始,并且一直延续到"]]"为止。这种注释相当于C语言中的"/*...*/"。在注释当中,"[["
阅读全文
摘要:没想到汉语编程又有人开始网上对骂了。一方指另一方骗人,一方吹自已伟大。 今天群里头有人又把它翻出来了,刚好无聊,也就发明了一个汉语编程语言,集成到visual studio 2005的IDE中,名字就叫汉语编程++,欢迎同样无聊的朋友试用。Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--#include"常用头文件"整数主函数(整数参数数量,字符指针参数 是数组){整数变量1赋值为3;如果(变量1大于0){打印("可以中文编程\n");}系统命令(
阅读全文
摘要:LuaPlus是Lua的C++增强,也就是说,LuaPlus本身就是在Lua的源码上进行增强得来的。用它与C++进行合作,是比较好的一个选择。LuaPlus目前版本为:LuaPlus for Lua 5.01 Distribution Build 1080 (February 28, 2004)。大家可以到http://luaplus.org/ 站点下载:源码 (http://wwhiz.com/LuaPlus/LuaPlus50_Build1081.zip)目标码 (http://wwhiz.com/LuaPlus/LuaPlus50_Build1081_Win32Binaries.zip)
阅读全文
摘要:程序文档,曾经是程序员的一个头痛问题。写一个程序文档,比较花时间,但不是很难;麻烦的是当程序修改后,程序文档也要跟着同步更新,否则文档和程序就要脱节,文档也就变成没用的东西了。好在有许多好用的文档生成器来解决这个问题。目前比较流行的C++文档生成器是doxygen。本文就简单的介绍一下doxygen的文档注释方法,以供初学者参考:C++ 程序文档生成器介绍(doxygen)沐枫网志1.模块定义(单独显示一页)/**@defgroup模块名模块的说明文字*@{*/... 定义的内容 .../**@}*/ // 模块结尾2.分组定义(在一页内分组显示)/**@name分组说明文字*@{*/...
阅读全文
摘要:http://hi.baidu.com/%C0%EE%B6%AB%CF%FE/blog/item/0f1983a170a08989471064aa.html内存管理是C++程序员的痛。我的《内存管理变革》系列就是试图讨论更为有效的内存管理方式,以杜绝(或减少)内存泄漏,减轻C++程序员的负担。由于工作忙的缘故,这个系列目前未完,暂停。这篇短文我想换个方式,讨论一下如何以最快的速度找到内存泄漏。确认是否存在内存泄漏我们知道,MFC程序如果检测到存在内存泄漏,退出程序的时候会在调试窗口提醒内存泄漏。例如:class CMyApp : public CWinApp{public: BOOL Init
阅读全文
摘要:GPU性能调试:通常来说,使用CPU时间事件来调试GPU是低效并且是不准确的。D3D API在多数命令下会阻塞,甚至是Draw函数。它会在一些时间片上做一些真正的工作,而这往往是不可预知的。因此,GPU的性能调试只能用PIX或者是其他专用产品,例如NVIDIA’s NVPerfHUD来进行。显卡所用的内存:显卡所用的内存可以分为两大类:本地的和非本地的(相对于显卡来说)。在显卡处理的某些数据类型的时候,需要本地内存,例如 帧缓冲。 非本地内存,有时也成为AGP卡槽内存(AGP aperture),可以被显卡访问的某些数据类型所在的系统内存,例如顶点缓冲。本地内存要比非本地内存快。本地内存通常是
阅读全文
摘要:此教程版权归我所有,仅供个人学习使用,请勿转载,勿用于任何商业用途。商业应用请同我联系。由于本人水平有限,难免出错,不清楚的地方请大家以原著为准。也欢迎大家和我多多交流。其中部分图片来自网络,尽量保证了和原书中插图一致。特别感谢mtt重现了文章中的流程图^_^翻译:claymanBlog:http://blog.csdn.net/soilworkclayman_joe@yahoo.com.cn 3.3.3 Vertex Constants Instancing 在vertex constants instancing方法中,我们利用顶点常量来储存实体属性。就渲染性能而言,顶点常量批次是非常快的
阅读全文
摘要:翻译:claymanclayman_joe@yahoo.com.cn仅供个人学习使用,勿用于任何商业用途,转载请注明作者^_^注:呵呵,发现我对翻译东西上瘾了。这次翻译了《GPU Gem2》中第三章的内容,大家共同学习^_^在交互式程序中,丰富用户体验的重要方法之一就是呈现一个充满大量各种有趣物体的世界。从数不清的草丛、树木到普通杂物:所有这些都能提高画面最终的效果,让用户保持“幻想状态(suspension of disbelief)”。只有用户相信并且融入了这个世界,才会对这个世界充满感情——这就是游戏开发的圣杯(Holy Grail)。 从渲染的观点来看,实现这种效果,无非就是渲染大量小
阅读全文
摘要:在游戏开发和维护过程中,客户端都是不断更新的,伴随着每一次的更新,都会发布一个更新补丁包来对旧的客户端进行更新,来使其变成新的客户端,补丁包应该包含更新成新客户端的最少量资源(最大量资源就是整个新的客户端覆盖旧的)更新程序通过读一个更新脚本,对旧的客户端进行文件添加,文件覆盖,文件删除等操作来更新旧的客户端,当更新量比较少比较简单的情况下,更新脚本可以资源整理人员自己写,但当更新量太大,资源多而杂的情况下,手写更新脚本就变得极容易出错了,所以有必要开发一个工具自动查找两个版本的差异,自动生成更新脚本。比较的方法:假设有两个文件夹A,和文件夹B,A是旧的客户端,B是新的客户端,需要通过算法来找出
阅读全文
摘要:第一种解释:功能差不多,都用来进行线程控制,他们最大本质的区别是:sleep()不释放同步锁,wait()释放同步缩. 还有用法的上的不同是:sleep(milliseconds)可以用时间指定来使他自动醒过来,如果时间不到你只能调用interreput()来强行打断;wait()可以用notify()直接唤起.第二种解释:sleep是Thread类的静态方法。sleep的作用是让线程休眠制定的时间,在时间到达时恢复,也就是说sleep将在接到时间到达事件事恢复线程执行,例如:try{System.out.println("I'm going to bed");Thread.sleep(100
阅读全文
摘要:DirectX是一种应用程序接口(API)是计算机计算图形的一种规则,相当于一个通用编译器。 DirectX并不是一个单纯的图形API,它是由微软公司开发的用途广泛的API,它包含有Direct Graphics(Direct 3D+Direct Draw)、Direct Input、Direct Play、Direct Sound、Direct Show、Direct Setup、Direct Media Objects等多个组件,它提供了一整套的多媒体接口方案。只是其在3D图形方面的优秀表现,让它的其它方面显得暗淡无光。DirectX 1.0 第一代的DirectX很不成功,推出时众多的
阅读全文
摘要:这篇文章是关于C++语言的一个新的扩展——标准模板库的(Standard Template Library),也叫STL。 当我第一次打算写一篇关于STL的文章的时候,我不得不承认我当时低估了这个话题的深度和广度。有很多内容要含盖,也有很多详细描述STL的书。因此我重新考虑了一下我原来的想法。我为什么要写这篇文章,又为什么要投稿呢?这会有什麽用呢?有再来一篇关于STL的文章的必要吗? 当我翻开Musser and Saini的页时,我看到了编程时代在我面前消融。我能看到深夜消失了, 目标软件工程出现了。我看到了可维护的代码。一年过去了,我使用STL写的软件仍然很容易维护。 让人吃惊的是其他
阅读全文
摘要:你要erase的元素很容易识别。它们是从区间的“新逻辑终点”开始持续到区间真的终点的原来区间的元素。要除去那些元素,你要做的所有事情就是用那两个迭代器调用erase的区间形式(参见条款5)。因为remove本身很方便地返回了区间新逻辑终点的迭代器,这个调用很直截了当:把remove的返回值作为erase区间形式第一个实参传递很常见,这是个惯用法。事实上,remove和erase是亲密联盟,这两个整合到list成员函数remove中。这是STL中唯一名叫remove又能从容器中除去元素的函数:坦白地说,调用这个remove函数是一个STL中的矛盾。在关联容器中类似的函数叫erase,list的r
阅读全文
摘要:腾讯创造了中国互联网的最大成功,也经历了关于垄断和抄袭的最大非议。它现在决意打破自己的围墙花园,数亿用户是否埋单? 已经12岁的腾讯在2010年迎来自己的本命年。 它的愿景是“成为最受尊敬的互联网企业”,过去180多天却遭到行业内迄今为止的最大非议。 噩运始于2010年7月。 一篇标题近乎谩骂的文章引爆对国内互联网大公司抄袭和垄断等“作恶”行为的集体控诉,标的正是这只企鹅。4个月后,真正的危机爆发,中国第二大客户端软件奇虎360以安全为名开始真枪实弹地围剿QQ。腾讯最著名的代言人马化腾做出全线产品与360不兼容的“艰难决定”,业界哗然。 回顾这些介乎闹剧与正剧间的情节,居然无人说得清楚
阅读全文
摘要:2010年,延续了十年高速增长的网络游戏陷入增长的瓶颈期。进入下半年以来,游戏公司营收增长放缓、裁员等新闻不断出现,让习惯了高速增长的游戏行业颇不习惯。不过,在不那么给力的去年,网页游戏却依旧实现了超过130%的高速增长。随着客户端游戏无端化的发展,客户端游戏是否会被页游取代的讨论再次成为去年的热点。 客户端网游的烦恼 从上线测试的新游数量上看,2010年是繁荣热闹的一年。据网游测试列表统计,2010年上线测试的游戏产品在300款左右,其中还不包括未线上测试而夭折的产品。然而,业内资深人士透露,在这些游戏中,在线人数在5万以上的不足十款。 与此同时,网络游戏用户规模的增长也不像前几年迅速
阅读全文
摘要:近年来所有成功网游的成功之处,都不在于在玩法或系统上有什么革命性的突破和创新,不去盲目地追求“人无我有”,而都在于从细节出发,把人性化和引导等方面做到位,在“人有我有”的基础上追求“人有我优”。之所以出现这样的局面,主要源于三方面的原因:1.网络游戏发展10多年来,各种在玩法和系统上的革命性突破和创新其实都已经被业内同行们不断尝试过,10年前在玩法创新上“一张白纸好作画”的时代已经过去了。发展至今,已经没有什么从无到有的创意或者点子,是只有你想得到而别人想不到的;那些你觉得是什么了不起的所谓创新,可能只是因为你不知道,或者是别人其实已经尝试过,但是实践证明不可行而已。2.经过10多年网游的发展
阅读全文
摘要:DDS 文件 DirectDraw ® Surface (DDS) 文件格式用于存储具有和不具有 mipmap 级别的纹理和立方体环境贴图。此格式可以存储未压缩的像素格式和压缩的像素格式,并且是存储 DXTn 压缩数据的首选文件格式。此文件格式的开发商是 Microsoft®。 可以将 DDS 文件用作纹理贴图。 使用 Direct3D 9 可以渲染为 DDS 格式。(利用 DX8 或 DX9,也可以使用金属凹凸明暗器渲染 DDS 文件。)如果系统不支持 DX9,则可以将 DDS 文件用作纹理,但是不能渲染它们。 界面 “曲面/体积格式”组 DDS 支持各种输出格式,具体情况取决于分配给红、绿
阅读全文
摘要:--!版权所有foruok,转载注明出处!--从lua调用C++函数和对象 利用LuaPlus可以方便的从C++中调用lua脚本,翻过也一样。通过注册函数或类对象,lua便可以访问C++。 一、C风格函数注册 Lua提供了C风格的回调函数注册,该函数原型如下: int Callback(LuaState* state); 无论是全局函数、类非虚函数、类虚函数,只要符合上面的原型,都可以向Lua注册。我们以全局函数为例,下面是我们提供的一个回调函数CStyleAddFunc:int CStyleAddFunc(LuaState * state) { LuaStack args(state
阅读全文
摘要:#include "stdafx.h"#include windows.h#include conio.h#include ctype.h#define LUA_FILE "Plus.lua"#include "LuaPlus.h"using namespace LuaPlus;LuaStateOwner g_LusState(true);void CPrint(const char* sMsg){ printf(sMsg); OutputDebugString(sMsg);}int L_CPrint(LuaState* pState){ OutputDebugString("Ta
阅读全文
摘要:很多的软件工程师特别是windows软件开发人员的或多或少都有些UI开发的经历。对于一个软件产品,从任何一个角度 来说,UI都是至关重要的。软件的UI就像一个人的脸,一个人的第一印象很重要,一个软件亦是如此。如果第一次用得不顺手那么第二次用的机会就降低了许多。所以现在的软件UI也是越做越漂亮,用户体验越来越好。当然代价就是UI系统越来越复杂越来越难。而对于程序员来说,很多时候,UI开发总是一个枯燥重复的工作。从我的经历来看,UI的开发特别是GUI的开发也是在不断的发展。 说到编程,对于我来说,不得不说一下最初的经历。最早一次接触计算机是在92年,高一。学校里给开了一门课叫劳动技术课也叫上机课
阅读全文
摘要:转载请注明出自http://www.mobilegamebase.com/由于新项目动工,UI方面需要确定方向,所以最近纠结于各种解决方案的选择。以下是对各方案的比较,仅供参考,希望对同样纠结于此的朋友有所帮助:)1.沿用当前的UI公司是从2D游戏起家的,2D游戏本身就相当于一套庞大的UI,所以这方面有所积累。这套UI系统至少是经过几十万玩家测试,稳定性自然不必说,而且移植到3D游戏后,绕过Ogre,使用DX直接绘图绘文字,速度非常快,而且文字可以轻松实现多种字体,以及加粗、斜体、下划线等效果,所以继续沿用似乎是比较好的选择。但是它同样存在问题,因为一方面UI脚本机是我们自己实现的,当时为了跨
阅读全文
摘要:此文并不是聚润堂所在公司当前运营的网游游戏服务器架构,而是在看过了近十个商业网游的架构,在现阶段心目中规划的简单实用的网游服务器架构。网游的本质是人和人之间关系,人越多,关系越多,越能把人留住。开服头三天,人数是最多,为了保证一个月后,玩家等级达到一定的等级,策划的玩法都可以完全展开,单组服务器容纳人数越多越好,如果是PVE结构的游戏,最好能容纳1万人左右。这样在一个月后流失率50%的情况下,还有5000人左右在一组服务器内,已经产生比较强大的社会结构,各种高级玩法才有进行的基础。如果是PVP洗用户的游戏,容纳人数越高越好。两款较好的国战游戏,《征途》达到了每组4万人,《成吉思汗》,推测至少也
阅读全文
摘要:Popcap公司的《植物大战僵尸》一小游戏大创意令全世界游戏玩家都沉迷于装点自家的绿色花圃,150万的销量用事实告诉我们游戏并不仅仅要依靠华丽的画面,创意与乐趣才是游戏真正的原点。当然游戏的创意并不是凭空出现,有4名成员组成的植物大战僵尸制作小组经历的整整4年的开发时间,一年多时间定型,用两年的时间不断打磨,做用户体验优化,从无到有、从最初的原型到最后的成果,通过JamesGwertzman的演讲我们有幸了解到世界上第一流创意小组的游戏制作过程。 “在休闲领域,如果不打造精品很难向客户收钱,复制者、追随者可以很快做一个相似产品。只有花三年时间,别人才很难超越你的高度。”《植物大站僵尸》最开始
阅读全文