09 2010 档案

摘要:http://www.cppblog.com/lovedday/category/4152.html 阅读全文
posted @ 2010-09-24 16:32 oayx 阅读(179) 评论(0) 推荐(0) 编辑
摘要:前不久看到一文章,说用assert的时候不要把非法情形和错误情形混淆了,错误始终是要处理的.然后我review自己最近写的代码,愣是没有弄明白什么是非法什么是错误,难道错误不是非法么,非法不是错误么?我本身用assert是相当频繁和随意的,但是经过这么一看,反而觉得原来那些assert的代码都要改成错误处理了...花非花,雾非雾.经过思考与实践,最终确定了规则.非法情形,大部分你觉得有问题的地方,... 阅读全文
posted @ 2010-09-24 16:16 oayx 阅读(236) 评论(0) 推荐(0) 编辑
摘要:通常调用一个lua函数需要以下步骤//1.解析函数名,将lua函数压栈findLuaItem("a.b.c.func");//2.参数压栈lua_push()//3.函数调用lua_call()最慢的是第一步解析函数名、反复查表的过程,这个过程会消耗不少时间和空间。如果可以避开这个过程,就能提升效率。函数总有函数指针,就算lua函数没有,也该有个handler吧。这个想法在LuaBind中得到了确... 阅读全文
posted @ 2010-09-24 16:15 oayx 阅读(4128) 评论(0) 推荐(1) 编辑
摘要:话说一直想找一个别人写好的使用,可惜没什么人会拿这小东西发布,只好自写一个。1.多级链表分配池我不知道这种设计的具体学名是什么,这部分的内容也许你去看《STL源码分析》的有关章节更合适一些,这里我只能用我粗陋的语言描述一下。内存池,完全可以从字面上理解为从池子里申请内存,释放的时候还给池子。最简单的内存池应该是fix_pool吧,即每次分配出来的内存块大小是固定的。这种池子的管理结构是一个链表,链... 阅读全文
posted @ 2010-09-24 16:14 oayx 阅读(1709) 评论(0) 推荐(0) 编辑
摘要:标题党一下.....昨天做了一个特殊抓取的爬虫,不到50行python代码,痛痛快快的给我抓取了2000个flashgame和玩法说明.除了感叹会写程序实在太好了之外,还想到了如何快速学习一门新语言的事情.严格来说,应该是学习命令式语言,和其他类型的语言可能一点交集都没有.一门语言的本质只是简单的语法和基本IO,只要稍微认知了这些内容就能开始写程序了,要精通则是一个不断进行实际应用和调试的过程. ... 阅读全文
posted @ 2010-09-24 16:13 oayx 阅读(420) 评论(0) 推荐(0) 编辑
摘要:【1. 概览】Ogre支持Quake3的bsp格式。相关的代码在“Plugin_BSPSceneManager”工程中。主要的类有以下几个:Class BspSceneNode:BspSceneNode是SceneNode的派生类,是专门提供给BSPSceneManager使用的。主要是提供针对于BSP tree的可见性判断。这个类并不是BSP tree的node,BSP ... 阅读全文
posted @ 2010-09-24 16:09 oayx 阅读(642) 评论(0) 推荐(0) 编辑
摘要:[前言:在Ogre的FacialDemo中采用了顶点动画(确切点说是PoseAnimation)让面部产生面部表情及发音动画,本文简单介绍了顶点动画的概念,并结合FacialDemo,探讨如何实现PoseAnimation。]顶点动画是直接使用顶点让网格(mesh)产生动画的一种方式。每一组动作在顶点动画中对应一个顶点数据实体。顶点动画被存储在.mesh文件中,因为它与网格的顶点紧密相连。实际上,... 阅读全文
posted @ 2010-09-24 16:07 oayx 阅读(2115) 评论(0) 推荐(0) 编辑
摘要:C语言中函数就是一些代码的集合,实现相对单一的功能;应该有名称、参数、返回值。实际上函数应该是能够从调用程序中接受输入,处理一定的逻辑,并最终能返回到调用程序的一段代码的集合。本主要讨论windows下C函数如何实现的;主要包括:函数调用约定、参数传递和返回。调用约定Windows中默认使用的cdecl调用约定,又叫C调用约定(不加任何修饰就是这种约定)。cdecl的调用约定意味着:1)参数从右向... 阅读全文
posted @ 2010-09-24 16:03 oayx 阅读(475) 评论(0) 推荐(0) 编辑
摘要:看几个例子:shorta=0xa400;longnShift=2;if(a<<nShift<0)nShift=0;上面的程序中,nShift等于多少?shorta=0xa400;longnShift=2;longb=a<<nShift;上面程序的b最后值是多少?shorta=0xa400;longnShift=2;shortc=a<<nShift;上面程序... 阅读全文
posted @ 2010-09-24 16:02 oayx 阅读(266) 评论(0) 推荐(0) 编辑
摘要:优化很多时候是必要的,特别对于瓶颈程序。这里讨论一段代码的优化过程,从而演示一段简单的代码优化过程,并希望得到一些建议。先描述一下需求:一个16位数的序列,将其奇数位置放到一个序列,偶数问题放到另外一个序列。注意奇数和偶数序列的长度不一定相同。最简单的代码:1voidCTestClass::SplitToEvenOddSeqs(short*sp,short*dp1,short*dp2,inteve... 阅读全文
posted @ 2010-09-24 16:02 oayx 阅读(370) 评论(0) 推荐(0) 编辑
摘要:程序员当然要说代码了,代码是程序员的一切,离了代码说其他都是假的,我这里从一段代码开始。intc=0,n=0,nDiff=0;intheight=m_imgHeight;//imageheightLPBYTElpDsp=pSampling;jp2_int16*sp,val;LPBYTEdest;//m_imgWidth-imagewidthnDiff=m_lineBytes-m_imgWidth*... 阅读全文
posted @ 2010-09-24 16:01 oayx 阅读(1596) 评论(0) 推荐(0) 编辑
摘要:在 C/C++ 语言中,函数是如何被调用的呢?本文就实际的例子,走进汇编代码来看下函数调用的过程。 首先看一个简单的代码例子: void test(int i) { int j = i; } void test1() { } int test2() { return 1; } void test3(int a,int b,int c) { } void test4() { int ... 阅读全文
posted @ 2010-09-24 15:59 oayx 阅读(363) 评论(0) 推荐(0) 编辑
摘要:微软D3D设备能创建和操纵下面初基类型:l 点列表l 线列表l 线带l 三角形列表l 三角形带l 三角形扇区你能用IDirect3DDevice9接口中的任何粉刷方法在C++程序中粉刷原基。1.1.1.1. 点列表一个点列表是一个顶点的集合,这些顶点被作为单独的点来粉刷。你的程序可以在3-D场景中用它们作为在多边形表面上开始字段、点线。下图描述了一个粉刷后的点列表。你的程序能在一个点列表上应用素材... 阅读全文
posted @ 2010-09-24 15:57 oayx 阅读(1294) 评论(0) 推荐(0) 编辑
摘要:D3D设备是D3D的粉刷组件;它封装并存储粉刷的状态,另外,D3D设备执行转换和光操作,并光栅化一个图像到一个面上。本节主要包括内容:1. 设备类型2. 创建设备3. 选择设备4. 不为人知的设备5. 决定硬件支持6. 处理顶点数据7. 设备支持的初基类型按照架构来说,D3D设备包含一个转换模块、一个光模块、一个光栅化模块;如下图所示:D3D当前支持两种主要类型的D3D设备:带硬件加速的光栅化以及... 阅读全文
posted @ 2010-09-24 15:56 oayx 阅读(2456) 评论(1) 推荐(0) 编辑
摘要:使用微软的D3D来编程需要熟悉3D几何原理。本节介绍建立3D世界的最重要的几何概念。1.1.1. 3-D坐标系统典型的3D图形程序使用两种笛卡儿坐标系统:左手和右手。两个坐标系统中,正X轴指向右边,正Y轴指向上。你可以通过你左右手指间指向与正X轴相同时大拇指指向的方向来记住坐标方向。下图描述了这两种系统。微软的D3D使用左手系统,如果你正在将一个基于右手坐标系统的程序导入到程序中,你必须做两个改变... 阅读全文
posted @ 2010-09-24 15:55 oayx 阅读(4066) 评论(0) 推荐(0) 编辑
摘要:1. D3D入门本节提供一个对D3D图形编程接口(API)的简短介绍。这里你将发现一个图形管道的概貌以及帮助你实现基本D3D功能的指南。1.1. D3D架构本节包含Microsoft的D3D组件、其他Microsoft DirectX、操作系统和系统硬件之间的关系;下面将讨论这些主题。1.1.1. D3D的架构概览这是一个图形管道的描述。每个块的功能性在下面介绍,连接包含更多的信息。更多关于D3D... 阅读全文
posted @ 2010-09-24 15:53 oayx 阅读(1634) 评论(0) 推荐(0) 编辑
摘要:一, 为什么要跨平台? 你想过把你的 Windows 上编写的程序在 Linux 编译运行吗,以及在 Mac 或其他 OS 上运行等等?反过来也一样?这就需要涉及到跨平台编程知识。这里需要注意的是,平时很多在一个平台运行的程序在跨平台的时候变的不再正确。 Java 并非真的是跨平台的开发环境,它是运行在它自己的平台上。这里主要关注 C 和 C++ 的跨平台开发。 下面主要就几个方面来讨论跨平台编程... 阅读全文
posted @ 2010-09-24 15:52 oayx 阅读(364) 评论(0) 推荐(0) 编辑
摘要:使用FreeType实现矢量字体的粗体、斜体、描边、阴影效果前言:Freetype是一个跨平台、开源的字体渲染器,网上很多文章介绍,本人就不啰嗦了。本文重点在于实现文章标题所属的各种效果,不是Freetype的基本使用方法介绍文档,所以对于Freetype不熟悉的同学们请先学习下Freetype的基本用法,才可以使用本文中所提及的方法。正文:用FreeType实现矢量字体的粗体、斜体、描边、阴影效... 阅读全文
posted @ 2010-09-24 15:50 oayx 阅读(2715) 评论(0) 推荐(0) 编辑
摘要:引言:  编写高效简洁的C语言代码,是许多软件工程师追求的目标。本文就工作中的一些体会和经验做相关的阐述,不对的地方请各位指教。第1招:以空间换时间  计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个角度出发逆向思维来考虑程序的效率问题,我们就有了解决问题的第1招——以空间换时间。例如:字符串的赋值。方法A,通常的办法:#define LEN 32char strin... 阅读全文
posted @ 2010-09-24 15:48 oayx 阅读(380) 评论(0) 推荐(0) 编辑
摘要:好好的一个程序,在我的电脑(ELSA X800 256M显卡)上运行一切正常,拿到别的电脑(845G内置显卡)上。啊。花屏~~赶快调试,幸好公司的电脑也有这种内置显卡的电脑。赶快用远程调试。谁知这一调试,就花了我整整一个上午。。。赶快写下来。。。最终排差的原因是DrawIndexedPrimitiveUP最后一个参数VertexStreamZeroStride ,这个参数是用来指定顶点所占的字节数... 阅读全文
posted @ 2010-09-24 15:47 oayx 阅读(506) 评论(0) 推荐(0) 编辑
摘要:作者: Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes Copyright © 2003 Tecgraf, PUC-Rio. All rights reserved. 译者:ShiningRay Nicholas @ NirvanaStudio给予支持 1 - 绪论Lua是一种为支持有数据描述机制的一般... 阅读全文
posted @ 2010-09-24 15:44 oayx 阅读(4976) 评论(0) 推荐(0) 编辑
摘要:使用 Lua 编写可嵌入式脚本Lua 提供了高级抽象,却又没失去与硬件的关联 将此页作为电子邮件发送 ... 阅读全文
posted @ 2010-09-24 15:43 oayx 阅读(874) 评论(0) 推荐(0) 编辑
摘要:去年我作了一个Lua脚本的C++包装,有许多朋友感兴趣,并尝试使用,我感到受宠若惊。事实上,我作的包装,学习的目的比较强,它还是有许多缺陷的。为了让朋友们少走弯路,我推荐使用LuaPlus作为C++的包装。LuaPlus是Lua的C++增强,也就是说,LuaPlus本身就是在Lua的源码上进行增强得来的。用它与C++进行合作,是比较好的一个选择。LuaPlus目前版本为:LuaPlus for L... 阅读全文
posted @ 2010-09-24 15:42 oayx 阅读(520) 评论(0) 推荐(0) 编辑
摘要:作者: 沐枫 (第二人生成员)版权所有转载请注明原出处主页:第二人生 http://www.d2-life.com   http://www.d2-life.com/LBS/blogview.asp?logID=39  在这篇文章中,我想向大家介绍如何进行Lua程序设计。我假设大家都学过至少一门编程语言,比如Basic或C,特别是C。因为Lua的最大用途是在宿主程序中作为脚本使用的。  Lua 的... 阅读全文
posted @ 2010-09-24 15:41 oayx 阅读(506) 评论(0) 推荐(0) 编辑
摘要:一.Hello World 1.前言    偶最近在学习Lua, 所以写出心得和大家共享, 争取一天写一篇, 嘿嘿.  才开始学所以内容很浅, 希望大家包涵.  Lua是一种完全免费的脚本语言, 可以和C/C++语言紧密结合,  它的官方网站在http://www.lua.org. 在网站上可以下载到lua的源码, 没有可  执行版本, 不过不用担心, 因为lua源码可以在任何一种C/C++的编译... 阅读全文
posted @ 2010-09-24 15:40 oayx 阅读(1986) 评论(0) 推荐(0) 编辑
摘要:作者: 沐枫 (第二人生成员)版权所有转载请注明原出处主页:第二人生 http://www.d2-life.com   http://www.d2-life.com/LBS/blogview.asp?logID=41为什么要用Lua作脚本?  使用Lua作脚本,主要是因为它小巧玲珑(体积小,运行快),而且它的语法又比较简单明了。不过,使用LuaAPI将Lua引擎集成到程序中,确实有一些不方便... 阅读全文
posted @ 2010-09-24 15:40 oayx 阅读(426) 评论(0) 推荐(0) 编辑
摘要:Lua 的 5.1 版本已经正式发布。现在,我们应该把全部讨论放在这个版本上。应该尽量使用 local 变量而非 global 变量。这是 Lua 初学者最容易犯的错误。global 变量实际上是放在一张全局的 table 里的。global 变量实际上是利用一个 string (变量名作 key) 去访问这个 table 。虽然Lua5 的 table 效率很高 ,但是相对于 local 变量,... 阅读全文
posted @ 2010-09-24 15:38 oayx 阅读(1114) 评论(0) 推荐(0) 编辑
摘要:《软件调试》,是2008年6月份出的新书,我觉得比较适合用C++用了比较长时间的人看,这可以提高他们的调试水平。其实,评价一个人是否是编程高手,主要还是看当程序出问题时调试能力。这本书在当当网上打折后是96元。以下是这本书的一些介绍:ACM院士和调试技术先驱Jack B.Dennis教授做历史回顾计算机和操作系统领域资深专家David A.Solomon撰写序言。调试高手笔耕三载集十余年经验成百万... 阅读全文
posted @ 2010-09-24 15:36 oayx 阅读(843) 评论(1) 推荐(0) 编辑
摘要:Ogre的Manager真是多啊,就象个官僚公司,干事的没几个,一堆的Manager,个个丫还都是Singleton.说自己是Singleton却又public构造函数,让人来new它.在第1次被new的时候,偷偷地将this赋给静态成员ms_Singleton,第2次new它就要assert喊冤了,当然这都是叫Singleton的模板基类的那个构造函数干的(典型的小人行径,见不得光).Manag... 阅读全文
posted @ 2010-09-24 15:35 oayx 阅读(650) 评论(0) 推荐(0) 编辑
摘要:由于非计算机专业毕业,对于一些经典有用的算法不是很了解,最近在网上看了些关于寻路算法的,虽然没有立刻拿来所具体的项目,对于平时的一些思维还是很有用.高级的用法还需继续探索.用A*算法寻路有个比较郁闷的问题,虽然每一步都可以选择到最优路径,但是并不是起点到终点的最优路径,特别是在有障碍物的时候,可以饶开障碍物,但也会走“冤枉路”。我个人认为的解决方法:1、确定障碍范围。障碍物... 阅读全文
posted @ 2010-09-24 15:33 oayx 阅读(521) 评论(0) 推荐(0) 编辑
摘要:我翻译这篇教程的目的是为了帮助那些对图形渲染技术有兴趣却又苦于找不到免费中文学习资料的人。在我的身边没有任何一位从事计算机专业的前辈,从刚学会WINDOWS的基本操作到现在,我的计算机技术完全都是一步步自学过来的,算算学编程的历史也近5年时间了。我往往要花一半以上的学习时间用来查学习资料(记得我学GIF图像压缩解压算法时,用了近2个星期时间才编出了显示GIF图片的程序,主要原因就是资料不够,只看一... 阅读全文
posted @ 2010-09-24 15:32 oayx 阅读(347) 评论(0) 推荐(0) 编辑
摘要:前不久chensh出于不可告人的目的,要充当老师,教别人线性代数。于是我被揪住就线性代数中一些务虚性的问题与他讨论了几次。很明显,chensh觉得,要让自己在讲线性代数的时候不被那位强势的学生认为是神经病,还是比较难的事情。可怜的chensh,谁让你趟这个地雷阵?!色令智昏啊!线性代数课程,无论你从行列式入手还是直接从矩阵入手,从一开始就充斥着莫名其妙。比如说,在全国一般工科院系教学中应用最广泛的... 阅读全文
posted @ 2010-09-24 15:31 oayx 阅读(1258) 评论(0) 推荐(0) 编辑
摘要:游戏运行和显示的速度固然重要,不过我认为,在游戏中另外一个速度:游戏装入的速度也同样不可轻视。试想一个游戏,动不动就要装入数据,而且每次装入的时间都令人等到“心越来越慌”的地步,我想恐怕也没有什么人愿意玩下去的。  选择一个好的打包数据格式,对于编程人员来说,是一件很重要的事情。一般来说,一个游戏的文件个数太多,并不是一件好事情,不光占用的硬盘空间大,而且严重的影响装入速度... 阅读全文
posted @ 2010-09-24 15:29 oayx 阅读(552) 评论(0) 推荐(0) 编辑
摘要:打包,很形象的,就是把零散的东西转换为单一的东西。常用的压缩软件就可以说是给文件打包。那么,在游戏中为什么要打包?有什么意义么?个人认为,有以下几个意义:  1.安全性。  如果你的游戏重要数据以文本文件的形式保存在某些文件中,然而你又不希望玩家随意修改这些数据。(比如某些ini文件之类的)把他们和其他2进制文件全部打包在一起的话,这个问题就可以避免了。  2.节约磁盘空间。  文件太多的话,很容... 阅读全文
posted @ 2010-09-24 15:28 oayx 阅读(892) 评论(0) 推荐(0) 编辑
摘要:本人正在准备做一个游戏引擎(你就当我准备产生垃圾好了~呵呵!),准备写文档,就顺便把这篇文章写出来了,初次发稿,写得可能不是很好,请多多包涵~谢谢!~~  资源打包就是将一些零碎资源(如图片,音乐文件)。打包的好处有哪些呢?  1、减少碎片。因为WINDOWS的文件管理系统的原因,将这些资源按原样放在硬盘里,会产生“碎片”。比如1个字节的文件,占用的空间就高达8KB。这样,... 阅读全文
posted @ 2010-09-24 15:27 oayx 阅读(681) 评论(0) 推荐(0) 编辑
摘要:游戏资源包括了游戏的图片、文字、音乐、动画和其他数据资源。虽然很多游戏的资源都是开放的或者采用通用格式压缩的,但也不少游戏是经特殊格式打包过了,要想得到这些资源可以寻找专用的资源提取工具。但并非所有游戏都有专门的提取工具。这时可以尝试寻找一些通用的游戏资源提取工具。一般来说这样的工具都能支持大量的游戏文件格式,而且有些工具还有一个强大的功能就是可以分析未知的压缩格式并提取出里面的图片、音乐、动画等... 阅读全文
posted @ 2010-09-24 15:26 oayx 阅读(12080) 评论(0) 推荐(1) 编辑
摘要:我们在市场上买了一个游戏,很少会轻易的看到游戏目录里一堆的BMP,PCX资源图片。难道他们不使用BMP之类的文件作为图片资源吗?非也,其实他们把这些资源图片进行了打包、压缩。  举几个游戏的例子吧,大名鼎鼎westernwood的《红色警戒》的.mix文件就是一种压缩包,里面包含了一堆堆的游戏图片,声音等资源。还有blizzard的《星际争霸》、《暗黑破坏神》、《魔兽系列》的.mpq文件也是一种压... 阅读全文
posted @ 2010-09-24 15:25 oayx 阅读(1937) 评论(1) 推荐(1) 编辑
摘要:顶点声明 从概念上讲,顶点声明是对顶点直接内存访问(DMA)以及图形流水线的 tessellator 引擎进行编程的一种方法。顶点声明简要地表示了数据的布局及 tessellator 操作。为了解决Microsoft® DirectX® 8.x中顶点声明的复杂性和可扩展性,9.0版引入了用来表示顶点数据流的新格式。 顶点着色器和顶点声明不再是在CreateVertexShade... 阅读全文
posted @ 2010-09-24 15:22 oayx 阅读(2460) 评论(0) 推荐(0) 编辑
摘要:http://www.dogame.com.cn/bbs/viewthread.php?tid=41696&extra=page%3D4 阅读全文
posted @ 2010-09-24 15:20 oayx 阅读(242) 评论(0) 推荐(0) 编辑
摘要:http://www.dogame.com.cn/bbs/viewthread.php?tid=4159&extra=page%3D3&page=1 阅读全文
posted @ 2010-09-24 15:18 oayx 阅读(192) 评论(0) 推荐(0) 编辑
摘要:在bullet中一个非常普遍的应用是 针对两个物体发生碰撞时调用开发者自己提供的回调函数比如球体碰撞到另一个球体 发出声音下面是一个例子, 场景中有3种物体 球(动态),地板(静态),墙壁(静态)球碰到墙和地板发出的声音不同。所以需要设置这三种对象为不同类别,利用 collisionobj的userpointer来完成int objclass[3] ={0,1,2};boxBody->set... 阅读全文
posted @ 2010-09-24 15:13 oayx 阅读(520) 评论(0) 推荐(0) 编辑
摘要:DBVT 在bullet 引擎中是很基础且重要的一个数据结构,本质上是一个可以动态更新的AABB树。在bullet的远距阶段是很高效的碰撞检测数据结构(比较OOB,K- DOP)。是组成dbvtbroadphase的重要成员。首先看看树中节点的定义view plaincopy to clipboardprint?struct btDbvtNode { btDbvtVolume volume; /... 阅读全文
posted @ 2010-09-24 15:12 oayx 阅读(666) 评论(0) 推荐(0) 编辑
摘要:原创帖子, 转载请注明出处,作者信息. 这个是自己分析bullet的代码过程中的笔记,比较简陋, 希望抛砖引玉, 欢迎板砖作者: 马良 (http://www.iphonephysics.com/ ) (此blog需Over GW)//应朋友要求在最后附上书目 理论准备:本科的数学分析,理论力学,线性代数。 尤其是理论力学中的朗格朗日动力学部分 最好能回忆起来。 碰撞检测上面列的两本书的内容就足够... 阅读全文
posted @ 2010-09-24 15:10 oayx 阅读(1542) 评论(0) 推荐(0) 编辑
摘要:原创帖子, 转载请注明出处,作者信息. 这个是自己分析bullet的代码过程中的笔记,比较简陋, 希望抛砖引玉, 欢迎板砖作者: 马良 (http://www.iphonephysics.com/ ) (此blog需Over GW)前提假设 计算机图形学中的物理模拟实际上只是追求视觉近似,而并非精确的物理模拟 同时物理引擎从简化计算考虑, 不与渲染引擎共享对象数据采用独立的一套数据. 1 架构分... 阅读全文
posted @ 2010-09-24 15:09 oayx 阅读(1205) 评论(0) 推荐(0) 编辑
摘要:msvcrt.dll (名称:Microsoft C Runtime Library)提供了printf,malloc,strcpy等C语言库函数,并且为使用C/C++(Vc)编绎的程序提供了初始化(如获取命令行参数)以及退出等功能.C Runtime Library 的来历, API, STL, MFC, ATL关系  刚接触Windows开发时,为了快速入门查了不少资料,没想到看的越多,脑袋越... 阅读全文
posted @ 2010-09-24 15:02 oayx 阅读(3819) 评论(2) 推荐(1) 编辑