
技术理论
文章平均质量分 81
pizi0475
这个作者很懒,什么都没留下…
展开
-
渲染管道
渲染管道 它是用来创建为3D世界进行几何描述的2D图形并设定一个虚拟摄相机确定这个世界中哪一部分将被透视投影到屏幕上 D3D中最基础的东西——顶点渲染,这个东西就和2D游戏中的画点是一个道理,重要性就不多说了,一个字,“太重要了!”。 渲染的基本步骤是这样的: (1) 定义顶点格式和FVF (2) 创建顶点缓冲区并填充之 (3) 用D3D进行渲染转载 2009-06-02 09:28:00 · 3128 阅读 · 0 评论 -
extern C的用法
链接指示符extern C如果程序员希望调用其他程序设计语言尤其是C 写的函数那么调用函数时必须告诉编译器使用不同的要求例如当这样的函数被调用时函数名或参数排列的顺序可能不同无论是C++函数调用它还是用其他语言写的函数调用它程序员用链接指示符linkage directive 告诉编译器该函数是用其他的程序设计语言编写的链接指示符有两种形式既可以是单一语句single statement 形式也转载 2009-06-02 16:12:00 · 1969 阅读 · 2 评论 -
单件模式(Singleton Pattern)
概述 Singleton模式要求一个类有且仅有一个实例,并且提供了一个全局的访问点。这就提出了一个问题:如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例?客户程序在调用某一个类时,它是不会考虑这个类是否只能有一个实例等问题的,所以,这应该是类设计者的责任,而不是类使用者的责任。 从另一个角度来说,Singleton模式其实也是一种职责型模式。因为我们创建了一个对象,这个对象扮转载 2009-06-04 16:52:00 · 1527 阅读 · 0 评论 -
骨骼动画导论
先说明,这篇文章由我翻译自Evan Pipho的>一书的内关于骨骼动画第五章的内容,去掉了前面的说明和最后的Demo说明,包含了所有的理论内容,转载请注明出处,谢谢!理解骨骼动画骨骼动画是使用”骨头”来运动一个模型而不是通过手动编辑和移动每个顶点或面而实现的动画.每个顶点被附着到一根骨头(或有时是多根骨头).一根骨头或一个关节只是一组顶点的一个控制点.这些概念类似于我们身体里的关节,例如我们的膝关转载 2009-06-09 11:12:00 · 3218 阅读 · 0 评论 -
简单的骨骼动画、骨骼动画理论
简单的骨骼动画、骨骼动画理论Keep in touch: zpxocivuby@126.com目的:指导别人使用矩阵任务:编写教程,编写代码阅读对象:d3d入门者,c/c++熟练,windows编程熟练,VC IDE熟练描述: 这一届我们来做一个简单的骨骼动画(非常简单啊!只有两个线段啊!)并且介绍一下实现思想是什么在3d世界中,人物的动画过程主要有两种实现方式:1. key frame an转载 2009-06-09 11:17:00 · 2303 阅读 · 0 评论 -
MFC消息传递顺序
1.AfxWndProc() 该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc2.AfxCallWndProc() 该函数负责保存消息(保存的内容主要是消息标识符和消息参数)供应用程序以后使用, 然后调用WindowProc()函数3.WindowProc() 该函数负责发送消息到OnWndMs转载 2010-02-04 14:39:00 · 2011 阅读 · 0 评论 -
引擎技术研究之场景管理------四叉树与视椎剔除技术
先说一下视椎的概念:视椎是摄像机可见的空间体积,外观就像截掉顶部的金字塔。视椎剔除就是将在视锥外的物体不进行渲染操作,以加快运行速度。大型场景经常用四叉树的技术来管理,即用四叉树的方式进行空间划分。 一:场景管理中四叉树的划分现以一地面为例讨论四叉树的划分技术。地面是由很多个三角形组成,两个三角形合成一正方形。如不进行四叉树划分,则需遍历所有三角形以确定被剔除物体,算法复杂度大。如转载 2010-02-26 17:31:00 · 2487 阅读 · 0 评论 -
内核对象
众所周知,Windows 编程最基础的还是对资源的利用、控制操作,资源是一个比较具体的东西,比如 CPU、内存等等。那么怎么来对资源进行操作呢,我们通常是通过“对象”与“资源”去打交道(这是本人现在的理解,可能有误)。而对象又可以分为“用户对象”、“GDI 对象”和“内核对象”。 显然被称作“内核对象”,他肯定是只能被内核访问的创建于内存中的“数据结构”,也就是说,内核对象只是一块存储空间,这转载 2010-03-02 13:09:00 · 1260 阅读 · 0 评论 -
基于高度图的3D地形渲染
转自:http://hi.baidu.com/%BA%C3%BA%C3%BC%D3%BC%D3%D3%CD/blog/item/3f803f12aa52b0c6c2fd7823.html 基于高度图的3D地形渲染,其最基本的原理就是,地形上各个点的高度值存于一个文件中(高度图),渲染时,把高度图中的高度数据设为顶点缓冲区中对应顶点的Y坐标值,那么自然就会产生高低起伏转载 2010-03-04 15:06:00 · 2192 阅读 · 0 评论 -
典型开源3D引擎分类比较
新一篇: 游戏引擎列表常见的3D引擎有:Unreal,Quake,Lithtech,OGRE,Nebula,Irrlicht,Truevision3D...等,其中开源免费的有:orge,irrlicht,fly3d, NeoEngine, revolution3d, Nebula2,Genesis3d等。OGRE 在免费、开源的引擎中评价最高,一个原因是作为一个图形渲染引擎,它支持的图形特性转载 2010-03-01 10:04:00 · 2658 阅读 · 0 评论 -
float和double在的存储方式
作者: jillzhang 联系方式:jillzhang@126.comC语言和C#语言中,对于浮点类型的数据采用单精度类型(float)和双精度类型(double)来存储,float数据占用32bit,double数据占用64bit,我们在声明一个变量float f= 2.25f的时候,是如何分配内存的呢?如果胡乱分配,那世界岂不是乱套了么,其实不论是float还是double在转载 2010-03-11 08:57:00 · 2807 阅读 · 0 评论 -
设计模式与追MM
1、FACTORY?追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户转载 2010-03-11 09:13:00 · 1616 阅读 · 1 评论 -
原码 补码 反码
相信大家看到这个标题都不屑一顾,因为在任何一本计算机基础知识书的第一章都有他们的解释,但是在书上我们只能找到一些简单的定义,没次看过之后不久就忘了。最近论坛里有人问起这些概念,看到很多人的回复是以前看过现在忘了去看看某某书之类,很少有给出一个合理的解释。于是本人就开始思考(虽然上帝会发笑,我还是要思考。),于是得出了以下的结论。 数值在计算机中表示形式为机器数,计算机只能识别0和1,转载 2010-03-11 08:55:00 · 1667 阅读 · 0 评论 -
观察者模式
观察者模式(Observer)完美的将观察者和被观察的对象分离开。举个例子,用户界面可以作为一个观察者,业务数据是被观察者,用户界面观察业务数据的变化,发现数据变化后,就显示在界面上。面向对象设计的一个原则是:系统中的每个类将重点放在某一个功能上,而不是其他方面。一个对象只做一件事情,并且将他做好。观察者模式在模块之间划定了清晰的界限,提高了应用程序的可维护性和重用性。 观察者模式有很多转载 2010-03-15 14:58:00 · 1347 阅读 · 0 评论 -
3D游戏中的场景管理(八叉树和BSP树简介)
如 何很好地表示出包含着成千上万物体的复杂场景,是设计系统必须要考虑的。这也是场景管理需要做得,给场景提供良好的层次关系,以便更好地进行筛选 (Culling)和隐藏面消除(Hidden surface removal)。场景管理涉及到可视性处理(Visibility processing)和碰撞检测(Collision detection),系统需要判断场景的哪些部分在视见约束体之内,另外如果两转载 2010-03-16 10:15:00 · 2154 阅读 · 0 评论 -
算法复杂度——时间复杂度和空间复杂度
关键字: 算法复杂度 时间复杂度 空间复杂度 1、时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或转载 2010-03-16 14:43:00 · 1391 阅读 · 0 评论 -
常用的算法的时间复杂度和空间复杂度
排序法 最差时间分析平均时间复杂度 稳定度 空间复杂度 冒泡排序O(n2)O(n2) 稳定 O(1) 快速排序O(n2)O(n*log2n) 不稳定 O(log2n)~O(n) 选择排序O(n2)O(n2) 稳定 O(1) 二叉树排序O(n2)O(n*lo转载 2010-03-16 14:44:00 · 1368 阅读 · 1 评论 -
SSAO
ssao是Crysis用到的算法,“Screen-Space Ambient Occlusion” (屏幕空间环境光遮蔽)。SSAO通过采样象素周围的信息,并进行简单的深度值对比来计算物体身上环境光照无法到达的范围,从而可以近似地表现出物体身上在环境光照下产生的轮廓阴影。可以利用“逐象素场景深度计算”技术计算得出的深度值直接参与运算。现在的效果确实错误还比较大,应该先进行简单的空间划分(或类似处理转载 2010-03-19 10:19:00 · 11054 阅读 · 0 评论 -
地形教程 - 从图像到高度图
Height Maps From Images从图像到高度图Now that we know how to load an image lets see how to create and draw a height map. This section presents a set of functions from the terrain library that deal with heigh转载 2010-03-23 10:05:00 · 3511 阅读 · 0 评论 -
环境变量
环境变量相当于给系统或用户应用程序设置的一些参数, 具体起什么作用这当然和具体的环境变量相关. 比如path, 是告诉系统, 当要求系统运行一个程序而没有告诉它程序所在的完整路径时, 系统除了在当前目录下面寻找此程序外, 还应到哪些目录下去寻找; 再如tc或vc++中, set include=path1;path2; 是告诉编译程序到哪里去找.h类型的文件; 当然不仅仅是指定什么路径, 还有其转载 2010-03-24 17:00:00 · 1274 阅读 · 0 评论 -
ASCII、ANSI、UNICODE及UTF-8编码
1. ASCII和Ansi编码 字符内码(charcter code)指的是用来代表字符的内码.读者在输入和存储文档时都要使用内码,内码分为 单字节内码 -- Single-Byte character sets (SBCS),可以支持256个字符编码. 双字节内码 -- Double-Byte character sets)(DBCS),可以支持65000个字符编码.转载 2010-03-29 16:57:00 · 1537 阅读 · 0 评论 -
UML类关系:依赖,关联,聚合和组合
generalization2.实现realization.二、依赖,关联,聚合和组合1.实例化(依赖)A将B作为局部变量进行使用.程序1void A::foo(){ B b; b.SomeMethod();}2.关联A与B存在一定的关系. 这里只考虑单向导航. 关联在代码中有多种表现形式.第一种, 作为参数:程序2void A::foo(B& b) // (B转载 2010-04-08 15:10:00 · 1233 阅读 · 0 评论 -
关联、组合、聚合、依赖关系比较
类之间的关系种类: Generalization(泛化),Dependency(依赖关系)、Association(关联关系)、Aggregation(聚合关系)、Composition(合成关系)。 其中Aggregation(聚合关系)、Composition(合成关系)属于Association(关联关系),是特殊的Association关联关系。Generalization(泛化转载 2010-04-08 15:11:00 · 1372 阅读 · 0 评论 -
实时真实感图形学技术
在前面的几节中,我们已经详细介绍了各种光照明模型及它们在真实感图形学中的一些应用方法,它们都是用数学模型来表示真实世界中的物理模型,可以很好的模拟出现实世界中的复杂场景,所生成的真实感图象可以给人以高度逼真的感觉。但是,我们发现,用这些模型生成一幅真实感图象都需要较长的时间,尤其对于比较复杂的场景,绘制的时间甚至可以达到数个转载 2010-04-10 22:56:00 · 5544 阅读 · 0 评论 -
iocp
问题现在网络游戏很流行,上万个玩家同时在线的情况很常见,网游服务器如何处理这么巨量的数据?!要是读过了"Winsock I/O方法"这篇文章,可以了解到套接字I/O模型中的:select,WSAAsyncSelect,WSAEventSelect,Overlapped I/O模型一次最多都只能支持6 4个套接字!这些模型显然不能胜任。而Winsock I/O模型中的"Completion port转载 2010-04-12 21:24:00 · 1348 阅读 · 0 评论 -
《精通正则表达式》笔记
1. 多选结构(mm|gg) 表示匹配 "mm"或"gg"2. 忽略大小写s/source/dest/i搜索source,将其替换为dest,此处的i只对source起作用,而不会作用于dest。3. 单词分界符//> 用来匹配单词的结束比如: /cat/>匹配以"cat"结尾的单词,如scat则:/ 必须精确匹配 "cat"4. 捕获括号及"反向引用"转载 2010-04-13 20:12:00 · 1206 阅读 · 0 评论 -
虚拟现实中三维真实地形的可视化方法
1 引言 随着计算机图形图像软硬件技术的发展,人们认识周围环境从传统的二维思维方式转向立体空间的思维方式,开始构建三维的、实时交互的、可“ 进入”的虚拟地理环境,相继提出3DGIS、VRGIS以及相关三维GIS的概念。在这些三维的虚拟环境中,真实地形的生成有着非常广泛的应用,同时也是虚拟环境的基础。因此,怎样找到快捷的地形建模途径已成为视景仿真中的首要任务。为此,我们对借助于现有软件快速生成地转载 2010-04-10 23:02:00 · 6305 阅读 · 0 评论 -
麦比乌斯带
数学家们吐露,麦比乌斯带只有单面,如果你要将它分成两半,你将会感到十分可笑,因为分开后还是一条带。 莫比乌斯环的奇妙之处有三: 一、莫比乌斯环只存在一个面。 二、如果沿着莫比乌斯环的中间剪开,将会形成一个比原来的莫比乌斯环空间大一倍的、具有正反两个面的环(环0),而不是形成两个莫比乌斯环或两个其它形式的环。 三、如果再沿着环0的中间剪开,将会形成两个与环转载 2010-04-02 08:07:00 · 3357 阅读 · 0 评论 -
OCTREE详解
对OCTREE的描述 OCTREE 是对3D空间进行划分,也可以叫空间分割。他允许你只对你的3D世界中摄象机照射的区域进行作画。他也能用于冲突检测。下面讲一下为什么要进行空间分割。假设你建立了一个游戏世界,这个世界有超过100,000个多边形要画。如果你建立一个循环并传递这些多边形,那速度是很慢的。即使你有一块很好的显示卡,他也会有很大的麻烦。但是玩你游戏的玩家的显示卡不会超过300$。有没转载 2010-04-01 08:39:00 · 3014 阅读 · 3 评论 -
BSP技术详解
我这个人非常懒,到现在也没有发表几篇文章,今天有一点时间贴上一些我翻译的文章.BSP技术作为室内引擎渲染的主流技术虽然已经存在多年,但是生命力仍然非常顽强,最新的DOOM3,HL2仍然将它作为渲染的主流技术,但是在网上对它介绍文章虽然多却非常浅显,大多是使用Q3的BSP文件进行渲染,而BSP文件如何产生则介绍非常少,盖因为这一部分是场景编辑器的工作,而完成一个这样的BSP编辑器是非常困难的,需要掌转载 2010-04-01 08:45:00 · 1961 阅读 · 0 评论 -
计算几何算法概览
http://blog.sina.com.cn/s/blog_4cb9953f0100aa7z.html 矢量的概念: 如果一条线段的端点是有次序之分的,我们把这种线段成为有向线段(directed segment)。如果有向线段p1p2的起点p1在坐标原点,我们可以把它称为矢量(vector)p2。 矢量加减法: 设二维矢量P = ( x1, y1 ),Q = (转载 2010-04-01 12:59:00 · 1902 阅读 · 0 评论 -
矩阵的转置与矩阵的逆
矩阵的转置 设 <!--NAMO_EQN__ 160 1A=(a_{ij})--> 是一个<!--NAMO_EQN__ 160 1m/times n--> 矩阵, 将 <!--NAMO_EQN__ 160 1A--> 的行与列互换, 得到的一个 <!--NAMO_EQN__ 160 1n/times m--> 矩阵<!--NAMO_EQN__ 160转载 2010-04-15 17:18:00 · 6864 阅读 · 0 评论 -
体素构造表示法(CSG)
所谓体素是指一些简单的基本几何体在计算机内的表示,如方体、圆柱、圆锥等。CSG是一个复杂的物体可由这些简单的基本几何体经过布尔运算(交、并、差)而得到。如图18-8a所示的物体,可以用图18-8b中的基本物体来构成。这些基本物体及相应的布尔运算可描述为一棵二叉树。树的终端结点为基本几何体,中间接点为正则集合运算结点。所谓正则集合运算指两物体经过交、并、差运算后的结果为一新的物体,而不会出现孤立点、转载 2010-04-03 08:27:00 · 8848 阅读 · 0 评论 -
Makefile 总述
http://www.linuxsir.org/main/doc/gnumake/GNUmake_v3.80-zh_CN_html/index.html#content 3.1 Makefile的内容在一个完整的Makefile中,包含了5个东西:显式规则、隐含规则、变量定义、指示符和注释。关于“规则”、“变量”和“Makefile指示符”将在后续的章节进行详细的讨论。本章讨论的是一些转载 2010-04-05 10:26:00 · 1121 阅读 · 0 评论 -
三维形体的构造及表达
实体造型技术的研究可以追到溯到六十年代初期,不过,直到六十年代后半期,有关实体造型的报道仍然很少。七十年代初期,出现了一些实体造型系统,如英国剑桥大学的BUILD-1系统,德国柏林工业大学的COMPAC系统,日本北海道大学的TIPS-1系统和美国罗切斯特大学的PADL-1、PADL-2系统等。转载 2010-04-03 07:53:00 · 7970 阅读 · 0 评论 -
Makefile
基本简介 Makefile文件 Makefile 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。 makefile带来的好处就是——“自动化编译”转载 2010-04-05 10:24:00 · 1076 阅读 · 0 评论 -
论简化三维流水线和逼近真实流水线快速构造引擎
Loserwang保留版权,转载请注明出处:http://hi.baidu.com/loserwang电子邮件:dreamcasttop at163.com《简化三维流水线和逼近真实流水线》目的:通过简化流水线可以在相当短的实践周期内逼近真实流水线。工具:VC7.1、DirextX、几何画板、MathType公式编辑器、科学计算器、3DS MAX 7.0、MilkShape 3D演示版转载 2010-04-19 20:44:00 · 4351 阅读 · 0 评论 -
GPU流式编程
现代的GPU,在计算历史中第一次把数据并行、流式计算平台放入几乎每台台式计算机和笔记本电脑中。一些最近的学术派研究论文——以及本书的其他章节——演示了这些流式处理器有能力加速范围很广的应用程序,而不仅仅是它们本来所针对的实时渲染。然而,要利用这个计算能力需要使用一个对很多程序员来说是陌生的,完全不同的编程模型。本章探寻了在CPU和GPU编程之间最基本的差别之一:存储器模型,它不像传统的基于CP转载 2010-04-07 11:18:00 · 5081 阅读 · 1 评论 -
实时阴影技术
7.2 实时阴影技术 在游戏中为了实现更逼真的自然效果,就要体现游戏场景中光与影的效果,有时候光影效果会是游戏中的一个主要成分,能极大地改变玩家的游戏体验,如图7-5所示。图7-5 游戏中的实时阴影7.2.1 阴影体在3D动作游戏中,GPU往往要面对绘制大量光影效果的场景,而游戏的光影效果越复杂,提供的视觉真实感就越好。但复杂的光影计算往往需要耗费大量的计算资源,导致转载 2010-04-07 11:19:00 · 3047 阅读 · 0 评论 -
Direct3D模板技术
网络游戏客户端编程 学习目标1.掌握模板的概念2.掌握模板的使用方法3.掌握阴影体的概念4.掌握实时阴影的技术实现知识背景1.掌握D3D程序的基本框架2.掌握D3D基本图形的绘制本章要点1.模板缓冲2.阴影体3.实时阴影的技术实现引 言在现在的3D游戏中,有一项特效是非常重要的,那就是阴影。可以说阴影是游戏仿真度的一个非常重要的指标转载 2010-04-07 11:21:00 · 2814 阅读 · 1 评论