自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

把握自己。

专注linux、english

  • 博客(78)
  • 资源 (7)
  • 收藏
  • 关注

原创 符号修饰与函数签名

约在20世纪70年代以前,编译器编译源代码产生目标文件时,符号名与相应的变量和函数的名字是一样的。比如一个汇编源代码里面包含了一个函数foo,那么汇编器将它编译成目标文件以后,foo在目标文件中的相对应的符号名也是foo。当后来UNIX平台和C语言发明时,已经存在了相当多的使用汇编编写的库和目标文件。这样就产生了一个问题,那就是如果一个C程序要使用这些库的话,C语言中不可以使用这些库中定义的函数和

2011-12-30 16:16:40 4138

原创 函数名修饰和调用规则

“C”或者“C++”函数在内部(编译和链接)通过修饰名识别。修饰名是编译器在编译函数定义或者原型时生成的字 符串。有些情况下使用函数的修饰名是必要的,如在模块定义文件里头指定输出“C++”重载函数、构造函数、析构函数,又如在汇编代码里调用“C””或“C ++”函数等。修饰名由函数名、类名、调用约定、返回类型、参数等共同决定。调用约定调用约定(Calling conven

2011-12-30 11:11:36 2370

原创 wxWidgets编程入门

0,完整实例#include "wx/wx.h"// 定义应用程序类class MyApp : public wxApp{public:    // 这个函数将会在程序启动的时候被调用    virtual bool OnInit();};// 定义主窗口类class MyFrame : public wxFrame{public:    // 主窗口类

2011-12-28 19:14:01 4966

原创 C++批判(1)

以下文章翻译自Ian Joyner所著的《C++?? A Critique of C++ and Programming and Language Trends of the 1990s》 3/E【Ian Joyner 1996】该篇文章已经包含在Ian Joyner所写的《Objects Unencapsulated 》一书中(目前已经有了日文的翻译版本),该书的介绍可参见于:h

2011-12-28 15:26:44 1271

原创 一个最小OpenGL框架

下面是一个基于glut的OpenGL程序框架,用的是正投影,可以方便的通过参数设置Frustum的大小。通常可以用来做二维的demo,比如二维填充算法演示等等。//迈克老狼整理,参考3D Graphics书#include #include #include // muse be placed before glut. gkd#include // Op

2011-12-28 15:17:12 1682

原创 OGRE手札-39 碰撞检测

Ogre采用树桩管理场景中的各种"元素"(摄像机、灯光、物体等),所有的东西都挂在"树"上,不在"树"上的东西不会被渲染。Ogre::SceneManager就是"树"的管理者,Ogre::SceneNode是从SceneManager中创建的(当然BSP和8*树的管理也和这两个类有关,这暂时不讨论)。AABB(轴对齐包围盒)这个东西是碰撞检测的基础,和它类似的还有OBB(有向

2011-12-28 11:30:38 2211

原创 VC中建立程序的关联文件

当我们双击一个txt文件的图标时,系统就会用记事本打开该文件,这就是程序的关联。那我们自己编写的程序如何建立关联文件呢?第一步:设置自己程序关联的文件类型打开资源下的String Table,找到其中的IDR_MAINFRAME,双击该项,修改它的值,设它原来的值是:TextEditor\n\nTextEd\n\n\nTextEditor.Document\nTextEd Docu

2011-12-27 21:23:35 1677

原创 C++枚举类型

如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型。之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来。 举个例子来说明一吧,为了让大家更明白一点,比如一个铅笔盒中有一支笔,但在没有打开之前你并不知道它是什么笔,可能是铅笔也可能是钢笔,这里有两种可能,那么你就可以定义一个枚举类型来表示它!enum box{pencil,pen};/

2011-12-27 16:46:54 1350

原创 高级碰撞检测技术

自从计算机游戏出现以来,程序员就不断地想办法来更精确地模拟现实世界。就拿乒乓游戏为例子(译者:Pong—被誉为电子游戏的祖先,有幸见过一次:),能见到祖先做的游戏感觉真是爽啊,想看的可以到FTP上下载“地球故事”就可以看到了:),游戏中有一个象征性的小方块(球)和两支拍子,游戏者需要在恰当的时间将拍子移动到恰当的地点,将小球反弹回去。这个基本操作的背后(以现在的标准来看)就是最原初的碰撞检测了。今

2011-12-27 16:00:58 1695 1

原创 游戏里实现碰撞检测方法

几乎所有的3D游戏都离不开碰撞检测——无论是各物体之间的碰撞检测,还是物体与场景之间的碰撞检测。在真实世界中,你是很自然地不能穿墙而过的,所以很多人在玩各种3D游戏的时候自然而然的忽视了碰撞检测这一过程的存在。然而,碰撞检测的过程是重要的。如果没有它,你在CS中就会毫无遮拦的飞来飞去——如果考虑重力的话,则会一直不停地往下掉,直到符点数溢出(或你受不了这一漫长的过程而离开游戏)为止。碰撞检测是在编

2011-12-27 15:53:49 3487 1

原创 PBRT 阅读 : 第一章

参见http://www.opengpu.org/forum.php?mod=forumdisplay&fid=8【题外话:这里只是记录我学习该书的体会,既不是直译,也不是意译,而是顺着作者的思路,把自己理解的东西再讲述出来,对于可能出现的误解会用原文说明。】第一章介绍关于渲染,有很多方式。大致有三类:基于物理学的渲染(Physically based):着

2011-12-27 13:29:34 5285

原创 windows进程间通信

摘 要: 随着人们对应用程序的要求越来越高,单进程应用在许多场合已不能满足人们的要求。编写多进程/多线程程序成为现代程序设计的一个重要特点,在多进程程序设计中,进程间的通信是不可避免的。Microsoft Win32 API提供了多种进程间通信的方法,全面地阐述了这些方法的特点,并加以比较和分析,希望能给读者选择通信方法提供参考。关键词 进程 进程通信 IPC Win32 API

2011-12-27 09:56:31 28433 3

原创 国产网游的悲哀!毁掉国产网游的七大恶心设定

导读:国产网游正在漫漫成长起来,这其中,有很多具有代表性的国产网游特色的设定,虽然表面上看是方便玩家,但深究起来,这些设定也有可能是毁掉国产网游毒瘤。        一、自动寻路说到最具代表性的中国特色的网游设定,自动寻路当仁不让。这一设定美其名曰是简化玩家操作、完善游戏体验,实则对游戏是种很大的伤害。一般来说,网游多是MMORPG,这种游戏旨在构建一个架空世界,玩家从中获取一种异样人

2011-12-26 22:33:57 2797 1

原创 socket网络编程之一:客户端和服务器端接口函数

以下为winsock。 1. socket网络编程分为客户端和服务器端,客户端发送请求,服务器端进行应答;     建立连接时,服务器端绑定端口监听(bind&listen),客户端发送连接请求(connect),然后服务器端接受请求accept,至此客户端和服务器端可以收发消息。     需要注意:         1)创建socket前需要调用WSAStartup,对socke

2011-12-26 22:08:54 2652

原创 STL容器:删除元素,迭代器失效,选择时机

一. 种类:标准STL序列容器:vector、string、deque和list。标准STL关联容器:set、multiset、map和multimap。非标准序列容器slist和rope。slist是一个单向链表,rope本质上是一个重型字符串非标准关联容器hash_set、hash_multiset、hash_map和hash_multimap。几种标准非STL容器,包括数组、bits

2011-12-26 16:03:33 2348

原创 GTK+图形化应用程序开发学习笔记(一)—概述

一、什么是GNOME、       GNOME的意思是“GNU Network Object Model Environment”(GNU网络对象模型环境),是Linux世界令人激动的软件开发成果。虽然它的名字比较长,但这个软件项目的目的却很简单,那就是实现一个永恒友好的、功能强大的用户和开发桌面环境,而这一环境又完全是以免费的开源代码软件为基础的。       正像它名字的那样,

2011-12-26 13:46:55 1370

原创 读代码的体会

记得以前面试的时候被问到一个问题:“你平时业余时间有没有读过什么开源的代码,谈谈是如何读的?以及有什么收获”。问题很好,当时却答得不怎么样,可能那时经历有限,也一直记着这个问题,常常在思考,现在写一些简单体会。我觉得读代码有几个步骤,刚开始就说去看架构文档,我觉得那是扯蛋,如果你基本没有看过里边的几行代码,架构是看不出来的,文档看过之后,似乎也没太大作用,过后即忘。唯有多花些时间,在代码里

2011-12-24 18:04:30 1903 3

原创 谈谈翻译的一些体会

因本人英文阅读速度实在太慢,只好看中文,最近在看一些译文,看得真是费力,可又不愿总是翻原文,于是和原文对着读,把里边认为不合适的译法一一校正。觉得有些原则还是要遵守:1,统一:英文原文用一个词,则中文不应该时而译为A,时而译为B,即使是近义词。(名词必须附带English name)2,不要删改添加修饰:尽一切可能忠实原文,原文如果备受青赖,一定有他的很多优点,甚至是几乎没有缺点,有些人译

2011-12-24 17:29:29 1611 3

原创 论软件开发中的宏观与微观

宏观,即系统设计与架构;微观,即算法精确实现,两条路,选一条坚定地走下去,可有所成。夹在中间的则是添砖加瓦的码农,如果不脱离这个层次,则只能面临淘汰。我,似乎适合宏观,天赋所致。框架先这么定,具体以后再详述。C/S架构要点:C要炫,S要海量吞吐量,稳定性预备话题:项目API,类API的独立性,好代码特征:搜索结果最小化C API的设计广泛采用前缀法.

2011-12-24 17:07:02 1923 6

原创 用C++实现跨平台游戏开发之Irrlicht引擎

一、 简介Irrlicht引擎是一个用C++书写的高性能实时的3D引擎,可以应用于C++程序或者.NET语言中。通过使用Direct3D(Windows平台),OpenGL 1.2或它自己的软件着色程序,可以实现该引擎的完全跨平台。尽管是开源的,该Irrlicht库提供了可以在商业级的3D引擎上具有的艺术特性,例如动态的阴影,粒子系统,角色动画,室内和室外技术以及碰撞检测等(见图1)。

2011-12-23 10:44:18 2376

原创 Irrlicht游戏引擎初步分析与研究

Irrlicht游戏引擎主要是由一个名叫Nikolaus Gebhardt奥地利人所设计,是sourceforge上的一个开源项目,也是著名的开源游戏引擎。Irrlicht是一个德国神话故事中的一种动物的名字,它能够发光和飞翔,可以在大部分的沼泽地附近发现它。单词"Irrlicht"是两个德国单词("irr"意思是疯狂的;而"Licht"意思是光)的组合。在英语中,它被译为"鬼火"。该项目从200

2011-12-23 10:18:30 3306 1

原创 OGRE+Physx赛车游戏开发

最近在用OGRE+NXOGRE(一个结合AGEIA PHYSX 和OGRE的物理引擎)做赛车游戏,网上查不到什么中文资料,于是转载这篇,希望对自己和他人有所帮助.游戏主要用到了几个引擎,物理引擎(PhysicsX SDK 2.3.2,即NovedeX的新版本),图形渲染引擎(OGRE 1.2.0,包括人机界面的CEGUI部分),声音引擎(Direct Sound),网络引擎(RakNe

2011-12-23 09:36:20 2631 1

原创 完成端口详解

几句话简单介绍下IOCP的使用:a) 像一般socket服务的开发一样i. 初始化sockii. Bind socketiii. Listen socketb) 创建一个完成端口i. CreateIOCompletionPort(sock,...)返回完成句柄gHandle。c) 创建accept线程i. 将接入的sock绑定到完成句

2011-12-21 14:25:44 3484 4

原创 利用WinInet类进行TCP/IP通信

WinInet是一个比Winsock高一层的API,但它只适用于HTTP、FTP和gopher的客户端程序(同步异步模式都可以)我们不能用WinInet创建服务器程序,wininet.dll独立于winsock.dll 在提供专业性客户端程序支持方面,WinInet远远超过了Winsock 优点:1.缓冲机制; 2.安全机制;3.Web代理访问; 4.提供I/O缓冲; 5.AP

2011-12-20 22:38:40 2281

原创 虚拟CListCtrl

一、什么是虚拟列表控件虚拟列表控件是指带有LVS_OWNERDATA风格的列表控件。。二、为什么使用虚拟列表控件我们知道,通常使用列表控件CListCtrl,需要调用InsertItem把要显示的数据插入列表中,之后我们就不必关心数据在哪里了,这是因为控件自己开辟了内存空间来保存这些数据。现在假设我们要显示一个数据库,里面的信息量很大,有几十万条记录。通常有两种方法解决这个问题:1

2011-12-20 20:59:19 2532 1

原创 简介Doxygen

什么是Doxygen?Doxygen 是一个程序的文件产生工具,可将程序中的特定批注转换成为说明文件。通常我们在写程序时,或多或少都会写上批注,但是对于其它人而言,要直接探索程序里的 批注,与打捞铁达尼号同样的辛苦。大部分有用的批注都是属于针对函数,类等等的说明。所以,如果能依据程序本身的结构,将批注经过处理重新整理成为一个纯粹的参考手册,对于后面利用您的程序代码的人而言将会减少许多的负担

2011-12-19 21:56:05 1400

原创 Ogre的官僚主义批判

Ogre的Manager真是多啊,就象个官僚公司,干事的没几个,一堆的Manager,个个丫还都是Singleton.说自己是Singleton却又public构造函数,让人来new它.在第1次被new的时候,偷偷地将this赋给静态成员ms_Singleton,第2次new它就要assert喊冤了,当然这都是叫Singleton的模板基类的那个构造函数干的(典型的小人行径,见不得光).Manag

2011-12-18 22:53:06 1868

原创 OGRE 1.7.2 编译方法

1.想编译OGRE,最起码要有OGRE的源码吧。可以去官方网站下载最新的源码包,我这里用的是1.7.2版本的,下载下来的文件叫 ogre_src_v1-7-2.exe。运行下载下来的程序,解压源码到一个目录下备用。2.下载并安装DirectX SDK,官方建议的版本是 DirectX SDK - February 2010。不同版本的DXSDK可能会造成OGRE编译失败,这

2011-12-18 18:31:36 3421

原创 程序员每天每周每月每年应该做的事

程序员每天该做的事1、总结自己一天任务的完成情况 最好的方式是写工作日志,把自己今天完成了什么事情,遇见了什么问题都记录下来,日后翻看好处多多2、考虑自己明天应该做的主要工作 把明天要做的事情列出来,并按照优先级排列,第二天应该把自己效率最高的时间分配给最重要的工作3、考虑自己一天工作中失误的地方,并想出避免下一次再犯的方法 出错不要紧,最重要的是不要重复犯相同的错误,那是愚蠢4、

2011-12-16 22:06:23 1695 2

原创 MFC中的视图重绘机制

1.当与文档类关联的视图类收到文档类通过UpdateAllVIews()函数发出的更新重绘通知后,会触发视图类的OnUpdate()函数的实现(#add 观察者模式)。UpdateAllVIews()的原型和特性:Void UpdateAllVIews (CView* pSender, LPARAM lHint, CObject* pHint);       pSender

2011-12-16 16:50:31 3184

原创 OpenIL(DevIL)

OpenIL(DevIL)CxImage和OpenIL都两个对图片读取的库,前者是一个开源库,功能也比较强大,可以读取很多类型的图像文件,比如bmp,jpg,png ,tiff等等。后者也是一个对图片的读取,处理,显示的库文件(似乎不是免费的,我也没有搞懂,不过最关键的是,两个都可以使用就行了),但是,我在VS2008下配置Cxiamge很久都未成功(此库在2005年都停止更新),于是使用Open

2011-12-15 23:09:31 3206 1

原创 数据库连接池

对于连接的管理可使用空闲池。即把已经创建但尚未分配出去的连接按创建时间存放到一个空闲池中。每当用户请求一个连接时,系统首先检查空闲池内有没有空闲连接。如果有就把建立时间最长(通过容器的顺序存放实现)的那个连接分配给他(实际是先做连接是否有效的判断,如果可用就分配给用户,如不可用就把这个连接从空闲池删掉,重新检测空闲池是否还有连接);如果没有则检查当前所开连接池是否达到连接池所允许的最大连接数(ma

2011-12-14 23:11:02 1256

原创 基于shared_ptr的通用资源池

数据库连接池, 线程池等等的概念, 相信大家不会陌生. 在编写服务器程序时, 这些概念的应用犹如家常便饭. 至于为什么要用”池”, 通俗的讲, 就是”避免频繁的资源分配与释放, 从而提高程序性能”, 往抽象里说, 就是”用空间换时间”.下面将介绍一个通用资源池的实现. 受益于shared_ptr的自定义deleter, 它的接口极为简单12345

2011-12-14 22:56:22 1346

原创 一个高效的内存池实现

在高效C++编程中看到一个不错的内存池实现方案,这里共享下,大家看看有什么不足。代码很简单,如下:templateclass CMemoryPool{    public:        enum { EXPANSION_SIZE = 32};        CMemoryPool(unsigned int nItemCount = EXPANSION_SI

2011-12-14 22:37:02 1762 1

原创 线程池原理及创建

本文给出了一个通用的线程池框架,该框架将与线程执行相关的任务进行了高层次的抽象,使之与具体的执行任务无关。另外该线程池具有动态伸缩性,它能根据执行任务的轻重自动调整线程池中线程的数量。文章的最后,我们给出一个简单示例程序,通过该示例程序,我们会发现,通过该线程池框架执行多线程任务是多么的简单。一,为什么需要线程池       目前的大多数网络服务器,包括Web服务器、Email服务器以

2011-12-14 22:20:19 1395

原创 实现自己的内存池

打开浏览器,搜索了下内存管理的概念,百度百科中是这样定义的:内存管理,是指软件运行时对计算机内存资源的分配和使用的技术。其最主要的目的是如何高效,快速的分配,并且在适当的时候释放和回收内存资源。说到内存,与之紧密相联系的一个概念就是指针。回想起上学那会儿,自己对指针是即喜欢,又害怕。因为学好了指针,就可以学好C,继而学好C++,但面对那些晦涩的概念,和程序运行中一些莫名其妙的指针越界、内存泄露……

2011-12-14 22:05:13 1248 2

原创 异步消息的传递-回调机制

1 什么是回调软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;异步调用是一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主

2011-12-14 16:32:15 3164 1

原创 COM技术初探

COM技术初探(一)一、COM是一个更好的C++1、COM 是什么Don Box 说"COM IS LOVE"。COM 的全称是 ComponentObject Model 组件对象模型。 2、从 C++ 到DLL 再到 COM2.1 C++如某一软件厂商发布一个类库(CMath四则运算),此时类库的可执行代码将成为客户应用中不可分割的一部分。假设此类库

2011-12-13 18:27:57 2560

原创 micropather实现A*算法

MicroPather is a path finder and A* solver (astar or a-star) written in platform independent C++ that can be easily integrated into existing code. MicroPather focuses on being a path finding engine fo

2011-12-12 22:41:47 1592

原创 Visual C++ 2008新特性速递

2007年11月,微软正式发布了Visual Studio 2008 RTM版,在发布之前,既没有在网站首页醒目位置打上相关标识,也没有在现实生活中进行相关宣传,仅在下载中心给出其90天试用版的下载链接,显得十分低调,有关的宣传活动,恐怕要等到2008年2月份发布Windows Server 2008时一同进行吧。此次Visual Studio 2008为英文版,想用简体中文版的朋友可能也要等

2011-12-09 13:52:47 1645

网络游戏客户端编程 随书code 全

vs2008编译, 方便下载, 是学习网络游戏编程的好的代码

2012-01-07

C++ BOOST 库中文指南

官方文档中文翻译版,亲手制作,绝对珍藏。

2010-12-22

\超级好的ogre的教程

Pro OGRE 3D Programming 中文翻译版本0.2.0

2009-11-12

数据结构实验课的全部源程序

全部程序都有顺序和链式存储两种,有线性表操作,栈队列的应用,稀疏矩阵的存储和转置,二叉树的实现和运算,线索二叉树的实现和运算,哈夫曼树的实现和运算,图的实现和运算,最小生成树,最短路径,拓扑排序,各种查找算法,各种排序算法,哈希表查找的实现和运算,下吧,疯狂的下吧,太好的资源了

2009-08-31

effective c++

c++经典著作effective c++,描述了c++在实际运用中应该遵循的一般性准则50条。

2009-08-27

清华大学c语言PPT

最全的JDK1.5帮助文档,支持类和方法的搜索。

2009-07-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除