摘要:
二:Lucene的搜索过程 1:Lucene搜索过程: 大的分为:关键字解析,获取docid(除去删除的docid),获取内容,飘红缩短。 2:关键词解析: 大概原理是:就是把输入的关键词和要搜索的域进行格式化。把应用请求的语义解释成lucene能懂的语法。 1:其实一般的架构就... 阅读全文
摘要:
Introduction log4net is a tool to help the programmer output log statements to a variety of output targets. log4net is a port of the excellent ... 阅读全文
摘要:
UserInfo ui = Users.GetUserInfo(userid); int adminflag = 0; try { UserGroupInfo ug = UserGroups.GetUserGroupInfo(ui.Groupid); adminflag = ug.Rad... 阅读全文
摘要:
在做Discuz!NT 2.0与自己的系统整合过程中,使用的是Discuz!NT 2.0的用户数据作为我的用户数据。 把Discuz!NT 2.0文件存放入bbs目录,把bbs目录设置为虚拟目录。把DNT.config拷贝到根目录。 登录很简单直接设置表单吧 " method="post"> 用... 阅读全文
摘要:
第十三章 渲染骨骼动画(Rendering Skeletal Animation) 所有的游戏都不可能只有静态物体,而是充满了动态元素,比如带动画的人物。通常这些动画都是通过动作捕捉技术记录下来,然后通过3D模型里的骨骼来实现的。当然,除了这些复杂的动画以外,还包括缩放,旋转,位移等简单操作。这一章... 阅读全文
摘要:
添加镜面高光(Specular Highlights) 至今为止还有一种灯光没有讨论过,就是镜面高光。镜面高光让物体呈现出闪闪发亮的效果,同时也让物体看起来更加真实。虽然使用固定管道也能实现镜面高光,但这种计算是基于顶点的。这一节,我们将用编成管道来实现镜面高光。 使用上一章渲染茶壶的例子作为开始。... 阅读全文
摘要:
使用Hight Level Shader Language 至今为止,我们的对于编程管道和HLSL的学习还根本没有表现出它的强大来。所实现的功能都可以通过固定管道来完成。然而,还有很多高级功能是固定管道不能完成的,只有使用HLSL才能完成。这一章我们将深入学习HLSL,教你如何使用这门技术来完成固定... 阅读全文
摘要:
使用可编程管道渲染Mesh 简单三角形例子唯一的特点就是:简单。你不可能只使用一个顶点程序和一个三角就完成一个游戏,因此,这一节我们将渲染整个mesh。删除文件里关于顶点和顶点缓冲的声明,添加mesh对象:private Mesh mesh = null;对于渲染mesh来说,有一个方便的地方就是在... 阅读全文
摘要:
第十一章 可编程渲染管道以及高级着色语言入门 至今为止,我们都在使用固定功能的管道(fixed-function pipeline)进行渲染。回到那段古老的日子(DirectX 8.0之前),这是唯一渲染物体的方法。固定功能的渲染管道本质上就是一系列用来控制如何渲染特定类型数据的规则以及行为。虽然在... 阅读全文
摘要:
Rendering to Surfaces 你是否玩过那种可以打开一个倒视镜的赛车游戏?或者可以在屏幕表面显示当前赛道的赛车游戏。这些效果都是通过把同一个场景(通常使用不同的摄像机)渲染为一个纹理来实现的。事实上,这虽然听起来很复杂,却相当容易实现。再从第五章的例子开始。首先自然先声明将用来渲染的纹... 阅读全文
摘要:
第十章 使用助手类(Using the Helper Classes)绘制直线 在第四章里我们就讨论过关于绘制直线的问题:使用基本图元里的line list或line strip绘制直线。但是这两种直线都不能改变宽度,也没有抗锯齿功能(除非整个场景都使用了抗锯齿)。 对于不同类型的应用程序来说,绘制... 阅读全文
摘要:
现在运行程序,可以看到和原来一样的效果。显示了所有细节的模型不停旋转。现在来处理移动摄像机的键盘事件。这里的代码和之前simplification mesh例子里的很相似。先声明摄像机的位置变量以及每次移动的距离常量。private float cameraPos = 580.0f;private ... 阅读全文
摘要:
第九章 使用其它Mesh类型简化Mesh(Simplifying Meshes) 我们花了大量的时间来学习扩展库中的基本Mesh类,但实际上,还有3种其它Mesh类型我们没有讨论过,在这一章中,我们就来看看这几个对象。我们已经知道如何通过使用Mesh类的Simplify方法创建一个简化过的mesh。... 阅读全文
摘要:
第八章 理解资源(Understanding Resoruces)资源是在Direct3D中渲染复杂对象的重要部分。在这一章的学习中,我们将会讨论关于资源的一些高级特性,包括: 静态和动态的资源 Updating the buffers included in meshes 使用各种锁定标志。 使用... 阅读全文
摘要:
使用纹理资源 Managed DirectX中所有的纹理资源都继承于BaseTexture类,而BaseTexture类又是从Resource类继承而来的。下面列出了BaseTexture对象中的几个新方法。LevelCount This read-only property specifies ... 阅读全文
摘要:
(接深入Managed DirectX9(十一)) 现在可以正式添加代码来优化mesh了。我们希望同时保留原来的mesh(经过clean的那个)和简化之后的mesh,因此,首先田间一个变量保存简化之后的mesh。private Mesh simplifiedMesh = null;之后,添加创建简化... 阅读全文
摘要:
UsingAdvancedMeshFeatures这一章,我们将要调论一些关于Mesh对象的高级特性,包括: 优化(Optimizing)mesh数据 简化(Simplifying)mesh 使用新的顶点数据元素创建mesh 连接(Welding)顶点克隆Mesh数据 终于,你可以在场景里加载并渲染... 阅读全文
摘要:
(接 Managed DirectX9 九)添加障碍物 恭喜,这就是你创建的第一个3D互动程序了。已经完成了模拟赛车的移动。虽然实际上是赛道在移动,但显出的效果确实是赛车在移动。至此,游戏已经完成大半。接下来是添加障碍物的时候了。与添加Car类一样,添加一个名为Obstacle的类。我们将使用不同颜... 阅读全文
摘要:
使用Managed DirectX编写游戏选择游戏 虽然很多关于3D游戏编程的高级主题还没有讨论,但我们已经有足够的背景知识来写一个简单游戏了。这一章,我们将使用至今学过的知识,再加上一点点新的东西来创建游戏。 真正开始写游戏之前,最好先拟一份计划。我们需要确定写什么类型的游戏,它将有哪些最基本的特... 阅读全文
摘要:
特别提示: 为什么需要使用时间呢?为了方便讨论,假设我们每一帧都把赛道移动相同的距离。也许在你的电脑上它运行的很完美,但在其他的系统上呢?找一台比你的系统配置低的系统运行看看吧,赛道看起来会运行的相当缓慢。同样换到配置较高的系统上,赛道又会移动的快很多。原因在于你的计算是基于帧速率(frame ra... 阅读全文
摘要:
更多渲染技术在讨论过了基础渲染方法之后,我们应该把注意力放到一些能提高性能,并且让场景看起来更好的渲染技术上来:渲染各种图元类型至今位置,我们只渲染过一种类型的图元,称为三角形集合。实际上,我们可以绘制很多种不同类型的图元,下边的列表描述了这些图原类型:PointList――这是一个自我描述的图元类... 阅读全文
摘要:
定义Mesh 虽然有很多时候,你需要手动创建顶点和索引数据,但更普遍的情况是从外部的资源加载已有的顶点数据,比如从一个文件。通常我们使用.X文件来保存这些信息。在前一章里,代码的大部分都用来创建几何体了。对于简单的三角形和立方体来说这似乎是完全可行的,但设想假如用相同的方式来创建拥有上万个顶点的物体... 阅读全文
摘要:
使用简单的渲染技术 至今为止,我们的渲染工作效率都很低。每次渲染场景时,都要分配新的顶点列表,并且所有东西存储在系统内存里。现代显卡集成了足够的显存,把顶点数据存放在显存可以获得大幅的新能提升:存放在系统内存里的数据,渲染每一帧时都要拷贝到显卡,这会带来极大的损失。只有移除每帧时的这种分配才能帮助我... 阅读全文
摘要:
选择正确的Device The number of possible permutations when cretion a device is quite staggering. 如今,市场里有大量不同类型的显示卡,记住每种显卡所支持的特性几乎时不可能的。你应该询问device,让它告诉你它所支持... 阅读全文
摘要:
拖放窗口时自动重置Device 任何曾经使用C++或VB开发DirectX3D的人都知道,在改变窗口大小时,需要重新设置devicd,否则,DirectX3D会按原来的分辨率继续渲染场景,并且把结果拷贝到(通过拉伸)新的窗口。当通过Windows Form控件创建device时,聪明的Mamaged... 阅读全文