游戏引擎Ogre
butwang
旅行家,探险家,艺术家。
展开
-
3D游戏引擎FAQ 3. 什么是剔除(culling)系统和LOD系统?
3. 什么是剔除(culling)系统和LOD系统?剔除系统可以只绘制出游戏场景中未被墙及其他物体遮挡的部分。一般的剔除系统是基于BSP树或者入口(Portal)的。BSP树系统是最快和最有效的场景组织结构,特别是对于室内场景来说,但是BSP树必须在场景编辑器中预计算。渲染器不支持使用八叉树(Octree)来组织场景的剔除。多数商业化3D引擎使用基于BSP树的剔除系统。如果使用BSP树的剔除系转载 2010-03-26 11:39:00 · 1887 阅读 · 0 评论 -
《星际争霸2》引擎技术解析
<br /> <br />就在SIGGRAPH大会刚结束之后,AMD和暴雪在AMD官方网站上放出了《星际争霸II》的官方技术文档,通过游戏引擎技术的展示让星际迷们感受到越来越多的惊喜。<br /><br />画面优化给CPU带来考验<br />着色方面,在使用原型的基础上利用3D Studio MAX让程序员对整体效果做最大的优化,反复的提炼使得整个作品就像被艺术家精心雕琢一样,配合上8000个独特的、不重复的线性着色渲染代码,使得Starcraft II与早期的游戏代码相比增加了N倍。<br /><br转载 2011-03-09 17:26:00 · 1094 阅读 · 0 评论 -
GameByro渲染系统剖析
引言:<br />GameByro作为一款次世代引擎,使用了复杂的材质系统,用来满足各种各样的需求。材质代表了物体受到光照后所呈现出的质感,而这种质感在计算机图形学中需要着色代码来完成,所以当前流行的图形引擎设计是使用被渲染对象的材质与shader相关联,GameByro也不例外。GameByro的材质系统可以通过shade tree生成shader程序,增强了应用程序层对可编程渲染管线的控制能力。 渲染架构概览:<br />在GameByro中,对象表面的色彩、纹理、光滑度、透明度、反射率、折射率、发光度转载 2011-03-09 17:47:00 · 1095 阅读 · 0 评论 -
SceneManager里的几个事件相关函数
1. Listener virtual void addListener (Listener *s) Add a listener which will get called back on scene manager events. Listener借口提供的功能 Public Member Functions virtual void preFindVisibleObjects (SceneManager *source, IlluminationRen原创 2011-03-06 13:19:00 · 1262 阅读 · 0 评论 -
次世代游戏引擎光影制作简述(转)
<br />Azure大大那里转来:<br />http://www.azure.com.cn/article.asp?id=429<br /> 一、游戏光影的范畴 <br />实际游戏制作当中,狭义的灯光只是指程序实时根据灯光影响的顶点色和动态阴影,但实际应用当中,影响玩家整体感觉的光影效果,也就是广义上的光影效果包含的范围要更加广泛。<br />程序的即时光影,shader的定制固然对光影效果至关重要,美术制作的lightmap,normalmap,VertexColor乃至Glow都可以构成一般玩家认转载 2011-03-09 17:06:00 · 939 阅读 · 0 评论 -
计算反射光向量
http://user.it.uu.se/~grafik/ht02/lectures/shading2.pdf反射光向量公式推导原创 2011-05-23 12:13:00 · 3746 阅读 · 0 评论 -
转-ogre字体生成(中文显示)
<br />好久没写博客了,今天写一下如何在ogre中使用自己的字体. <br /><br /> 在ogre中主要有两种方式生成字体: <br /> 一种是利用truetype字体生成字体纹理, 在材质中字体使用的资源往往以.ttf的形式存在<br /> 另一种是用自己画的图片生成字体. 在材质中只要提供一张图片(纹理)即可.<br /> 下面分别介绍一下这两种字体的实现方式.<br /><br /> 1. 利用truetype字体生成字体纹理<br /> 这种方式比较轻松, 打开 ogreSD转载 2011-04-06 21:48:00 · 1437 阅读 · 0 评论 -
Cryengine渲染引擎剖析(转)
ms,OpenGPU这些天又冷下去了,转篇Napoleon314 大牛的分析,排版好乱,见谅,耐心读,这是个好东西,注意看他自己的实现,是个技术狂人啊,Ogre焕发次时代的光芒啊~~~努力-----------------------------------------------------------------------转载自: http://www.opengpu.org/v转载 2011-06-08 22:56:00 · 3746 阅读 · 0 评论 -
ogre shader里使用共享参数
shared_params bUseShadow{shared_param_named bUseShadow float 1.0}fragment_program frag_fs cg{source frag.cgentry_point main_fsprofiles ps_3_原创 2011-07-11 19:50:43 · 1447 阅读 · 0 评论 -
Ogre如何将一个可渲染对象加进渲染队列
判断对象是否半透明实体 //----------------------------------------------------------------------- bool Pass::isTransparent(void) const {原创 2011-07-25 14:04:46 · 1422 阅读 · 0 评论 -
使用bjam编译boost
目的:可以使用bjam工具配置任意版本的vs(va2010,vs2008)和选择编译需要的boost库(Thread lib, Date Lit)。 1.显示当前配置的需要编译的库(这个太多了) bjam --show-libraries 按照需要编译所需的boost库:bjam stage --with-thread --with-date_time toolset=ms原创 2012-03-19 14:03:12 · 8853 阅读 · 0 评论 -
将OgreMain.dll的体积减到最小
要用Ogre来开发Web3d 游戏,最新版本的Ogre源码编译出来的文件体积大概9M左右,在加上其他一些动态库的话,近20M的基础动态库还是有的。这么大的引擎dll对于网络传输来说是很费时的,因此通过一些手段来减少引擎的体积对于web3d来说是很重要的。 轻量级始终是我们追求的目标。 下面是我优化体积的一些方法: 1. 可以不考虑boost链接库原创 2012-08-22 18:16:51 · 1436 阅读 · 0 评论 -
Ogre使用多线程
class SceneBackgroundLoading : public Ogre::WorkQueue::RequestHandler, public Ogre::WorkQueue::ResponseHandler, public Ogre::FrameListener{public: SceneBackgroundLoading(void){} ~SceneB原创 2012-03-06 22:02:57 · 3234 阅读 · 2 评论 -
整合OGRE的地形和PSSM+LiSPSM阴影算法
<br />OGRE版本1.7.1的Sample里包含了地形的示例,且用到了PSSM+LiSPSM。<br />今天尝试把Character的Sinbad模型摆到地形上,不过模型的材质本身不支持PSSM。<br />看了下地形示例的实现,发现它在给Shader传PSSM分界点数据时,用了把模板材质clone一份,再设置diffusemap和pssm分界点的方法,相当让人无语....<br /> view plaincopy to clipboardprint?MaterialPtr ret = Materi转载 2011-03-08 13:41:00 · 2013 阅读 · 1 评论 -
Ogre中的内存管理
1. OgreConfig中的关于内存的定义 Ogre使用的默认内存分配策略是 OGRE_MEMORY_ALLOCATOR_NEDPOOLING // define the memory allocator configuration to use #defineOGRE_MEMORY_ALLOCATOR_STD1 #defineOGRE_MEMORY_ALLOCATOR_NED2 #defineOGRE_MEMORY_ALLOCATOR_USER3 #原创 2011-03-06 13:20:00 · 1795 阅读 · 0 评论 -
Ogre1.7的多线程分析
在OgreConfig.h文件中有关于Ogre使用多线程的配置 1. 多线程支持的级别 /** Support for multithreading, there are 3 options OGRE_THREAD_SUPPORT = 0 No support for threading. OGRE_THREAD_SUPPORT = 1 Thread support for background loadi原创 2011-03-02 23:10:00 · 3184 阅读 · 1 评论 -
编译orge1.7.0
我用的vc2005来编译orge170的 1、下载ogre170源码 http://www.ogre3d.org下载orge170依赖库下载cmake(我下的是cmake 2.8.1) http://www.cmake.org2、cmake中sorce code是orge的源码目录,这个目录下有CMakeLists.txt,OrgeMain, CMake等目录where原创 2010-04-25 21:13:00 · 1258 阅读 · 0 评论 -
ogre1.7中文路径bug处理
ogre1.7在编译完成后,运行例子时,在完成配置界面后,会出现一个错误对话框:显示ogreroot.cpp (line 382)错误。经过调试发现,ogre要向“我的文档”写ogre的配置信息,就是配置界面中设置的信息,而在本人的电脑上,“我的文档”这个文件夹的路径是“D:/Backup/我的文档”。 若果你想立即体会一下ogre 的demo,你可以修改你的原创 2010-04-26 20:20:00 · 976 阅读 · 0 评论 -
OGRE实现天龙八部组合的骨骼动画
今天主要实现了将“女主角”女主角时装清凉装.mesh,和脸,头发进行组合,并完成了骨骼的融合 1_女空手战斗.skeleton:原创 2010-05-09 02:16:00 · 2347 阅读 · 3 评论 -
OGRE手动加载模型与材质
// [8/12/2010 Administrator] // 动态解析 材质脚本 //addMaterial(); { Ogre::FileInfoListPtr fileInfoList = Ogre::ResourceGroupManager::getSingleton().findResourceFileInfo( "General", "*.material"); for (Ogre::FileInfoList::const_iterator it =原创 2010-08-12 18:38:00 · 4068 阅读 · 0 评论 -
深入理解Direct3D9
<br />原文:http://www.cnblogs.com/effulgent/archive/2009/02/10/1387438.html<br /> <br />深入理解D3D9对图形程序员来说意义重大,我把以前的一些学习笔记都汇总起来,希望对朋友们有些所帮助,因为是零散笔记,思路很杂,还请包涵。<br />其实只要你能完美理解D3DLOCK、D3DUSAGE、D3DPOOL、LOST DEVICE、QUERY、Present()、BeginScene()、EndScene()等概念,就算是理解D转载 2010-12-25 12:42:00 · 703 阅读 · 0 评论 -
IDirect3DDevice9::SetTextureStageState
IDirect3DDevice9::SetTextureStageState<br />Sets the state value for the currently assigned texture.HRESULT SetTextureStageState(DWORDStage,D3DTEXTURESTAGESTATETYPEType,DWORDValue);<br /> <br />中英结合<br />三个参数:<br />1.指定当前设置的纹理层序号(Or ID)。貌似只能是0-7<br />2.设置纹转载 2011-01-15 19:37:00 · 922 阅读 · 0 评论 -
D3D中的texture应用示例
<br />本文列举了Direct3D中各种纹理应用实现:黑暗贴图,发光贴图,漫反射映射贴图,细节纹理,纹理混合,有较详尽的注解。其中黑暗贴图,发光贴图,细节纹理都是采用多重纹理的方法实现(也可以采用多次渲染混合实现)。<br /><br />示例代码使用Beginning direct3D game programming中的框架,省去不少事情,可以专注纹理话题。代码:点此下载<br /><br />下面来看代码与效果:<br /><br />正常的纹理贴图效果:<br /><br /><br />正常的转载 2011-01-15 20:07:00 · 1139 阅读 · 0 评论 -
《魔兽世界》地形研究
《魔兽世界》地形的惊艳之处,主要在于无缝连接的世界和精细的渲染效果,借助WoWmapview源码及能以线框模式查看D3D程序的分析工具,可以对其实现略窥一二。组织方式 《魔兽世界》采用分块的地形,这是它实现无缝地图的基础。 从WoWmapview源码来看,整块地形对应一个MapWorld,这块地形可以是整块卡利姆多大陆,整块东部王国,如果你在战场中,它还可以仅是这块战场地图。每个MapWorld分为64x64个MapTile。每块MapTile又进一步分为16转载 2011-01-26 11:25:00 · 1469 阅读 · 0 评论 -
编译7z.dll fatal error LNK1107
【解决方案】fatal error LNK1107: 文件无效或损坏: 无法在 0x2E0 处读取 收藏是FAT32系统分区的问题.如果你的硬盘式用NTFS就没有问题。。。解决方法:项目-->项目属性-->配置属性-->清单工具-->使用FAT32解决方法为 是就OK了。我也找了很久才成功的。祝你好运~~原创 2011-01-26 15:25:00 · 8628 阅读 · 0 评论 -
高级碰撞检测技术
高级碰撞检测技术<br />朱先忠转载自http://hi.baidu.com/%CD%AF%C3%F7%BE%D9/blog/item/f9f58221c458bb4ead34ded0.html<br /><br />自从计算机游戏出现以来,程序员就不断地想办法来更精确地模拟现实世界。就拿乒乓游戏为例子(译者:Pong—被誉为电子游戏的祖先,有幸见过一次:),能见到祖先做的游戏感觉真是爽啊,想看的可以到FTP上下载“地球故事”就可以看到了:),游戏中有一个象征性的小方块(球)和两支拍子,游戏者需要在恰当的转载 2011-01-28 13:27:00 · 832 阅读 · 0 评论 -
魔兽争霸3的自动拼接地形渲染方式
<br />源码已发布,请打开下载http://www.cppblog.com/mybios/archive/2008/10/31/65636.html<br />上次发了个这样的图,结果被某些人鄙视了,很郁闷啊。<br /><br />我们把一个魔兽3的草地贴图提取出来,并且用下面的分块方法来标示每一块小贴图,然后通过一种特定的方式来组织这些小贴图,形成真正的地表贴图。<br />魔兽争霸编辑器中刷地表时,刷一格就会影响四个周围的渲染块,具体如何影响?请看下图:<br /><br />这是贴图的分块索引方转载 2011-01-28 13:39:00 · 1299 阅读 · 0 评论 -
《天龙八部》使用的第三方开源库版权协议声明
《天龙八部》使用的第三方开源库版权协议声明如下 OGREOriginal Authors:Steve 'sinbad' Streeting, JianHua 'genva' Xie, Phillip J. 'pjcast' Castaneda Website:http://www.ogre3d.orgLicensed Under:LGPL(GNU Lesser General Public License) FreeImageOriginal Authors:Hervé Drolon and Floris原创 2011-02-06 22:16:00 · 2257 阅读 · 0 评论 -
rtt粒子渲染不正常的一系列问题2
粒子系统中最终颜色的来源:rgba = colorfading中各个阶段的rgba * 纹理的rgba.(不算alphablend到rendertarget的操作)。(colorfading中各个阶段的rgba 其实就是billboadset的顶点声明中的 diffuse 颜色。)1、既然最终的颜色是相乘关系,那么将colorfading的所有alpha改为0,为什么还是有闪烁?这个问题其实就是这个时候colorfading还没到起作用的时候。为什么呢,看看一个粒子系统中的一个billbord是怎样产生的:原创 2011-02-10 22:56:00 · 1013 阅读 · 0 评论 -
魔兽类游戏glest是一个基于opengl的开源RTS游戏
glest是一个基于opengl的开源RTS游戏,官网http://www.glest.orgGlest is a free 3D real-time strategy game, where you control the armies of two different factions:Tech, which is mainly composed of warriors and mec原创 2011-01-14 11:11:00 · 1195 阅读 · 0 评论