摘要: http://www.cppblog.com/lovedday/category/4152.html 阅读全文
posted @ 2010-09-24 16:32 oayx 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 前不久看到一文章,说用assert的时候不要把非法情形和错误情形混淆了,错误始终是要处理的.然后我review自己最近写的代码,愣是没有弄明白什么是非法什么是错误,难道错误不是非法么,非法不是错误么?我本身用assert是相当频繁和随意的,但是经过这么一看,反而觉得原来那些assert的代码都要改成错误处理了...花非花,雾非雾.经过思考与实践,最终确定了规则.非法情形,大部分你觉得有问题的地方,... 阅读全文
posted @ 2010-09-24 16:16 oayx 阅读(233) 评论(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 阅读(4120) 评论(0) 推荐(1) 编辑
摘要: 话说一直想找一个别人写好的使用,可惜没什么人会拿这小东西发布,只好自写一个。1.多级链表分配池我不知道这种设计的具体学名是什么,这部分的内容也许你去看《STL源码分析》的有关章节更合适一些,这里我只能用我粗陋的语言描述一下。内存池,完全可以从字面上理解为从池子里申请内存,释放的时候还给池子。最简单的内存池应该是fix_pool吧,即每次分配出来的内存块大小是固定的。这种池子的管理结构是一个链表,链... 阅读全文
posted @ 2010-09-24 16:14 oayx 阅读(1704) 评论(0) 推荐(0) 编辑
摘要: 标题党一下.....昨天做了一个特殊抓取的爬虫,不到50行python代码,痛痛快快的给我抓取了2000个flashgame和玩法说明.除了感叹会写程序实在太好了之外,还想到了如何快速学习一门新语言的事情.严格来说,应该是学习命令式语言,和其他类型的语言可能一点交集都没有.一门语言的本质只是简单的语法和基本IO,只要稍微认知了这些内容就能开始写程序了,要精通则是一个不断进行实际应用和调试的过程. ... 阅读全文
posted @ 2010-09-24 16:13 oayx 阅读(417) 评论(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 阅读(629) 评论(0) 推荐(0) 编辑
摘要: [前言:在Ogre的FacialDemo中采用了顶点动画(确切点说是PoseAnimation)让面部产生面部表情及发音动画,本文简单介绍了顶点动画的概念,并结合FacialDemo,探讨如何实现PoseAnimation。]顶点动画是直接使用顶点让网格(mesh)产生动画的一种方式。每一组动作在顶点动画中对应一个顶点数据实体。顶点动画被存储在.mesh文件中,因为它与网格的顶点紧密相连。实际上,... 阅读全文
posted @ 2010-09-24 16:07 oayx 阅读(2110) 评论(0) 推荐(0) 编辑
摘要: C语言中函数就是一些代码的集合,实现相对单一的功能;应该有名称、参数、返回值。实际上函数应该是能够从调用程序中接受输入,处理一定的逻辑,并最终能返回到调用程序的一段代码的集合。本主要讨论windows下C函数如何实现的;主要包括:函数调用约定、参数传递和返回。调用约定Windows中默认使用的cdecl调用约定,又叫C调用约定(不加任何修饰就是这种约定)。cdecl的调用约定意味着:1)参数从右向... 阅读全文
posted @ 2010-09-24 16:03 oayx 阅读(470) 评论(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 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 优化很多时候是必要的,特别对于瓶颈程序。这里讨论一段代码的优化过程,从而演示一段简单的代码优化过程,并希望得到一些建议。先描述一下需求:一个16位数的序列,将其奇数位置放到一个序列,偶数问题放到另外一个序列。注意奇数和偶数序列的长度不一定相同。最简单的代码:1voidCTestClass::SplitToEvenOddSeqs(short*sp,short*dp1,short*dp2,inteve... 阅读全文
posted @ 2010-09-24 16:02 oayx 阅读(366) 评论(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 阅读(1573) 评论(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 阅读(359) 评论(0) 推荐(0) 编辑
摘要: 微软D3D设备能创建和操纵下面初基类型:l 点列表l 线列表l 线带l 三角形列表l 三角形带l 三角形扇区你能用IDirect3DDevice9接口中的任何粉刷方法在C++程序中粉刷原基。1.1.1.1. 点列表一个点列表是一个顶点的集合,这些顶点被作为单独的点来粉刷。你的程序可以在3-D场景中用它们作为在多边形表面上开始字段、点线。下图描述了一个粉刷后的点列表。你的程序能在一个点列表上应用素材... 阅读全文
posted @ 2010-09-24 15:57 oayx 阅读(1290) 评论(0) 推荐(0) 编辑
摘要: D3D设备是D3D的粉刷组件;它封装并存储粉刷的状态,另外,D3D设备执行转换和光操作,并光栅化一个图像到一个面上。本节主要包括内容:1. 设备类型2. 创建设备3. 选择设备4. 不为人知的设备5. 决定硬件支持6. 处理顶点数据7. 设备支持的初基类型按照架构来说,D3D设备包含一个转换模块、一个光模块、一个光栅化模块;如下图所示:D3D当前支持两种主要类型的D3D设备:带硬件加速的光栅化以及... 阅读全文
posted @ 2010-09-24 15:56 oayx 阅读(2434) 评论(1) 推荐(0) 编辑
摘要: 使用微软的D3D来编程需要熟悉3D几何原理。本节介绍建立3D世界的最重要的几何概念。1.1.1. 3-D坐标系统典型的3D图形程序使用两种笛卡儿坐标系统:左手和右手。两个坐标系统中,正X轴指向右边,正Y轴指向上。你可以通过你左右手指间指向与正X轴相同时大拇指指向的方向来记住坐标方向。下图描述了这两种系统。微软的D3D使用左手系统,如果你正在将一个基于右手坐标系统的程序导入到程序中,你必须做两个改变... 阅读全文
posted @ 2010-09-24 15:55 oayx 阅读(4022) 评论(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 阅读(1583) 评论(0) 推荐(0) 编辑
摘要: 一, 为什么要跨平台? 你想过把你的 Windows 上编写的程序在 Linux 编译运行吗,以及在 Mac 或其他 OS 上运行等等?反过来也一样?这就需要涉及到跨平台编程知识。这里需要注意的是,平时很多在一个平台运行的程序在跨平台的时候变的不再正确。 Java 并非真的是跨平台的开发环境,它是运行在它自己的平台上。这里主要关注 C 和 C++ 的跨平台开发。 下面主要就几个方面来讨论跨平台编程... 阅读全文
posted @ 2010-09-24 15:52 oayx 阅读(360) 评论(0) 推荐(0) 编辑
摘要: 使用FreeType实现矢量字体的粗体、斜体、描边、阴影效果前言:Freetype是一个跨平台、开源的字体渲染器,网上很多文章介绍,本人就不啰嗦了。本文重点在于实现文章标题所属的各种效果,不是Freetype的基本使用方法介绍文档,所以对于Freetype不熟悉的同学们请先学习下Freetype的基本用法,才可以使用本文中所提及的方法。正文:用FreeType实现矢量字体的粗体、斜体、描边、阴影效... 阅读全文
posted @ 2010-09-24 15:50 oayx 阅读(2684) 评论(0) 推荐(0) 编辑
摘要: 引言:  编写高效简洁的C语言代码,是许多软件工程师追求的目标。本文就工作中的一些体会和经验做相关的阐述,不对的地方请各位指教。第1招:以空间换时间  计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个角度出发逆向思维来考虑程序的效率问题,我们就有了解决问题的第1招——以空间换时间。例如:字符串的赋值。方法A,通常的办法:#define LEN 32char strin... 阅读全文
posted @ 2010-09-24 15:48 oayx 阅读(376) 评论(0) 推荐(0) 编辑
摘要: 好好的一个程序,在我的电脑(ELSA X800 256M显卡)上运行一切正常,拿到别的电脑(845G内置显卡)上。啊。花屏~~赶快调试,幸好公司的电脑也有这种内置显卡的电脑。赶快用远程调试。谁知这一调试,就花了我整整一个上午。。。赶快写下来。。。最终排差的原因是DrawIndexedPrimitiveUP最后一个参数VertexStreamZeroStride ,这个参数是用来指定顶点所占的字节数... 阅读全文
posted @ 2010-09-24 15:47 oayx 阅读(502) 评论(0) 推荐(0) 编辑