OGRE相关
文章平均质量分 84
凭谁问
做自己所爱的
展开
-
OGRE Defferedshading实现和应用
基于Ogre的DeferredShading(延迟渲染)的实现以及应用 三年前开始接触ogre引擎,由于工作需要一直进行图形方面的研发和尝试,随着引擎技术的进步,ogre的与Cryengine3、Unreal3等一线图形引擎在画面上的差距越来越大,主要原因在于ogre目前的设计趋于一套开放性的架构,并不着眼于细节的完善,也就是说盖一栋别墅,如果你要住进去就要自己去装修..转载 2015-03-04 10:13:29 · 1291 阅读 · 0 评论 -
网游UI解决方案的选择(CEGUI/MYGUI/Hikari/Scaleform/...)
网游UI解决方案的选择作者 鸣·铭转载请注明出自http://www.mobilegamebase.com 由于新项目动工,UI方面需要确定方向,所以最近纠结于各种解决方案的选择。以下是对各方案的比较,仅供参考,希望对同样纠结于此的朋友有所帮助:)1.沿用当前的UI 公司是从2D游戏起家的,2D游戏本身就相当于一套庞大的UI,所以这方面有所积累。这套UI系统至转载 2013-07-26 17:14:43 · 1629 阅读 · 0 评论 -
OGRE 动画
动画是由若干静态画面,快速交替显示而成。因人的眼睛会产生视角暂留,对上一个画面的感知还末消失,下一张画面又出现,就会有动的感觉。计算机图形学中的动画也同样遵循着这一本质的原理。只不过不同于传统动画的手绘和拍摄,Ogre图形引擎可以通过自动或半自动的方式实时产生并播放动画图片。不过Ogre本身并不能像人一样了解场景中动画角色动作的具体含义,例如它不能明确的知道什么是抬手或者走路,只能转载 2013-07-25 15:27:59 · 1067 阅读 · 0 评论 -
OGRE中的任意类型 Any
有些时候我们可能想做这样一件事:float f = 1.f;int n = 2;std::vector myContainer; // X是一个虚构的用户定义类型myContainer.pushback(X(f));myContainer.pushback(X(n)); 我们想在一个容器里保存两种乃至多种不同的数据类型。但是,显然普通的模板参数如转载 2013-07-19 14:23:34 · 726 阅读 · 0 评论 -
D3DFVF_XYZ和D3DFVF_XYZRHW的区别
D3DFVF_XYZ和D3DFVF_XYZRHW有什么区别?以前好像没有仔细思考过,只是见到Beginning DirectX9中如是说:The RHW value, which stands for Reciprocal of Homogeneous W[1], tells Direct3D that the vertices that are being used are already in转载 2013-06-17 17:13:07 · 922 阅读 · 0 评论 -
简单的继承SimpleRenderable,实现画一个平面
#ifndef __LINE3D_H__#define __LINE3D_H__#include "Ogre.h"#include using namespace Ogre;using namespace std;#define POSITION_BINDING 0#define TEXCOORD_BINDING 1class Line3D:public Simpl转载 2013-06-04 18:13:26 · 735 阅读 · 0 评论 -
Ogre中显示2D
1.Displaying 2D在Ogre中创建Displaying 2D还是很简单的:1# 创建一个2D长方形:Rectangle2D *rect = new Rectangle2D(true);(true表示使用纹理)2# 设置长方形大小:rect->setCorners(-0.5f,0.5f,0.5f,-0.5f); //这用的是笛卡尔坐标系,原点在窗口的中心,X轴的正半轴转载 2013-06-04 14:37:22 · 3377 阅读 · 0 评论 -
用OGRE装载和渲染WOW模型
目前只支持一个Mesh,(WOW的 model 里有多个 ModelRenderPass每个 pass代表一个子物体,整个模型只有一套顶点数据,但每个子物体有自己的贴图信息和顶点索引) 还没添加动画,粒子的支持…. 一创建支持MPQ的FileSystemclass MPQArchive : public Ogre::Archive一个MPQArchive代表一个 .mpq文转载 2013-06-04 14:14:38 · 875 阅读 · 0 评论 -
修改OGRE中模型的顶点色
受到了 http://blog.csdn.net/honghaier/article/details/4130136 红孩儿的启发,对Ogre中的模型进行修改。以下贴出关键的一些代码。1 创建Mesh 参考了网上流传的天龙八部void GameState::createTileMesh() { MeshPtr mesh = MeshManager::getSingleton()转载 2013-06-04 14:10:34 · 1809 阅读 · 0 评论 -
OGRE的2D坐标、CEGUI坐标、鼠标坐标、 世界坐标转屏幕坐标
屏幕坐标系:左上角为(0, 0)右下角为(1, 1)OGRE的2D坐标系:左上角为(-1, 1)右下角为(1, -1)CEGUI坐标系:左上角为(0, 0),单位像素 转换公式(鼠标坐标=>OGRE的2D坐标)void setCorners(float left, float top, float right, float bottom){ left = left转载 2013-06-04 14:40:32 · 2323 阅读 · 0 评论 -
ogre manualObject 手动创建mesh
以下是ogre中的注释:Building one-off geometry objects manually usually requires getting down and dirty with the vertex buffer and vertex declaration API, which some people find a steep learning curve. This转载 2013-06-04 14:21:40 · 3480 阅读 · 0 评论 -
ogre中的材质脚本 (一)
ogre中的材质脚本 (一)资源组管理器初始化完毕时,装载材质脚本,OGRE会自动的在组相关的资源位置查找".materal”扩展名的文件,并对这些脚本进行语法解 析。手动解析可以通过MaterialSerializer::parseScript()。但是注意的是:解析脚本时并没有对脚本中定义的全部纹理等资 源进行加载,所以,在我们访问一个材质的时候,一定要确保它已经装载,转载 2013-05-30 17:43:17 · 1055 阅读 · 0 评论 -
OGRE的材质脚本 (四)
OGRE的材质脚本 (四)硬件缓冲区和缓冲锁使用经验 1:因为最快最优秀的缓冲自然是通过 HBU_STATIC_WRITE_ONLY类型创建,不创建备份缓存,并且仅进行一次HBL_DISCARD的锁操作永不再额外处理的缓冲。 2:当我们需要频繁更新的缓冲,可以用HBU_DYNAMIC_WRITE_ONLY来创建,不创建备份缓存,之后使用HBL_D转载 2013-05-30 17:50:23 · 1015 阅读 · 0 评论 -
OGRE的材质脚本 (二)
OGRE的材质脚本 (二)Texture_unit 纹理单元我们在PASS渲染通道处已经进行了一次整体的渲染环境设置,然而,在每个纹理单元,我们还可以对单独的纹理进行渲染属性设置。 texture_alias 设置一个纹理的别名,类似于技术的别名。格式: texture_alias 纹理别名默认该别名就是纹理单元的名字。 texture转载 2013-05-30 17:45:13 · 678 阅读 · 0 评论 -
OGRE 纹理单元 参数说明
以下是你可以在.material脚本的'texture_unit'部分使用的属性:可用的纹理层属性texture_alias texture anim_texture cubic_texture tex_coord_set tex_address_mode tex_border_colour filtering max_anisotropy mipmap转载 2013-05-30 16:45:24 · 3656 阅读 · 0 评论 -
OGRE的材质脚本 (三)
OGRE的材质脚本 (三)材质拷贝技巧1:一般来说,我们游戏中大量的材质是雷同性很强的,假若大段的复制材质渲染模式,实在是非常不值得的体力劳动,所以对于一些只有微小改变的材质设置,推荐使用材质拷贝。 材质拷贝技巧1:当两个材质完全一致时。直接类似于C++的继承的写法即可: Material met1{Technique{转载 2013-05-30 17:47:23 · 822 阅读 · 0 评论 -
CEGUI-AnimationSystem
CEGUI的动画系统实现了以下的功能:1.通过属性系统驱动,即在每一帧通过将某种属性设为不同的值,实现该属性的动画;2.驱动方式分为直接设值,在原有值上加一个值,和在原有值上乘一个值;3.动画曲线通过关键帧控制,关键帧包含时间点和值,值可以是直接设置的,也可以是动画开始时,从驱动目标上取的属性值,该属性可以与被驱动的属性不同;4.由一帧到另一帧的移动方式分为匀速、加速、减速和离散;转载 2013-05-29 11:00:50 · 994 阅读 · 0 评论 -
OGRE 内部渲染流程
以下是 Ogre 的代码中的详细说明:Renderable是OGRE中所有可渲染对象的抽象接口这个接口抽象出了在渲染管线中的被分组的离散的可渲染对象基本的方法。此接口的实现类必须是基于单一的材质、单一的世界矩阵(或者是一组通过权重混合的世界矩阵),以及单一的渲染操作。通过这个说明,应该能明确的是,Renderable 封装了3D世界中被渲染对象的基本属性和数据,这包括:渲染操作,材转载 2013-03-28 14:17:22 · 892 阅读 · 0 评论 -
透视投影的原理和实现
摘 要 :透视投影是3D渲染的基本概念,也是3D程序设计的基础。掌握透视投影的原理对于深入理解其他3D渲染管线具有重要作用。本文详细介绍了透视投影的原理和算法实现,包括透视投影的标准模型、一般模型和屏幕坐标变换等,并通过VC实现了一个演示程序。1 概述在计算机三维图像中,投影可以看作是一种将三维坐标变换为二维坐标的方法,常用到的有正交投影和透视投影。正交投影多用于三维健模,透视投影则由于转载 2013-08-27 15:20:49 · 749 阅读 · 0 评论 -
学习随笔 一 SOA AOS 面向对象与面向数据
SOA 数组的结构与AOS结构的数组,是面向数据和面向对象设计的区别之一。在需要高频率(如渲染循环中)访问数据的时候,一般情况下SOA的效率高于AOS,因为将需要频繁访问的数据连续存放会大大提高访问速度。虽然AOS的结构可能更适合面向对象设计,但是在高度依赖效率的地方应该使用SOA。引用大家都在说的一句话:一开始写程序用struct (c方式的编程,面向数据的编程) 后面开始用class原创 2014-01-03 14:14:33 · 5112 阅读 · 0 评论 -
OGRE ANIMATION
在说API之前先了解一下动画的原理:以一个人行走为例,要想使人能够行走,必须在这个人模型上设置一些特真点,然后让这些点在每一帧按照一定的规则进行动,从而改变整个模型的状态。在ogre里面,Keyframe类描述的是一个特征点(一个结点、一根骨头、一个顶点)的某一个关键帧的状态(位置、缩放、朝向等)和对应的时间点。一个可驱动点的所有keyframe组合成一个track,每个可驱动点都有一个他转载 2014-06-20 18:07:56 · 2560 阅读 · 0 评论 -
几款游戏引擎技术对比
如果只有客户端的话,可以考虑用gamebryo,技术好一点,用ogre也可以,如果规模不大,用unity3d,如果很有钱,要效果很好的,用unreal3,bigworld是带服务器的,如果能力不够,最好不要自己写。 如果使用Ogre需要投入较多的人力和物力,因为Ogre是开源的,工具不齐全,使用其他流行的引擎需要购买授权,可以在Ogre的基础上做东西,并且可以宣称是自主研发的,没有人会追究转载 2014-06-13 00:57:11 · 9908 阅读 · 0 评论 -
OGRE 换装方法
转自:http://blog.csdn.net/trcj1/article/details/6607209Ogre换装系统 角色换装作为游戏里一个古老而不可或缺的系统,各个引擎都有完备支持,Ogre也不例外。 尽管网上一些讨论把Ogre换装说得讳莫如深,实际上它还是很简单的。早在05年提及这个问题时,sinbad也只是说了一句“use Ent转载 2014-06-13 00:30:52 · 1055 阅读 · 0 评论 -
OGRE 1.0 至 1.7.3 更新日志
OGRE (Object-Oriented Graphics Rendering Engine)Change Logv1.7.3 [Cthugha] (08 May 2011) - MAINTENANCE RELEASEiOS: Remove the animation timer. Since DisplayLink is used by default now, thi转载 2014-06-28 19:51:44 · 2306 阅读 · 0 评论 -
简要分析Ogre的渲染队列实现原理
渲染队列在Ogre中是一个重要的概念,在场景中的所有物体都会在绘制前被Ogre放入到一个特定的渲染队列中。渲染队列主要起两个作用:1.确保正确的绘制顺序。比如先绘制天空盒再绘制一般物体,最后绘制界面。2.提高渲染效率。Ogre将具有相同pass的物体放在一起进行绘制,目的是尽可能减少渲染状态的切换。一般用户常用的是在entity中设置渲染队列序号,其实整个渲染队列的工作流程远远比这个复杂,但基本不转载 2014-06-27 13:35:57 · 2688 阅读 · 0 评论 -
lod地形
最近在看OGRE怎样载入地形的内容,因为terrain.cfg中涉及了很多的LOD(细节层次)的问题,看得我一把鼻涕一把眼泪的,所以就想说先看看LOD地形再去研究ogre本身地形实现的具体操作应该会好一些,主要资料参考的是曾凡喜,周炜,潘运亮等的《Direct3D实时渲染技术》这本书,其对于用四叉树实现的LOD地形有比较详细的描述。【LOD出现原因】 由于大的地形绘制需转载 2014-05-17 23:29:41 · 3414 阅读 · 0 评论 -
Ogre1.7.2 terrain地形构建例子
Ogre 1.7.2中的地形教程 ○读者可以对照着Ogre1.7.2中的terrain.h源码进行阅读加深理解,蓝色部分均为源码○去除了一些具体场景比如添加mesh,设置setAmbientLight等与terrain无关的操作 第一步 创建地形全局配置 TerrainGlobalOptions下面这段代码在setupContent()函数中,使用过Ogre1.6转载 2013-01-22 16:05:22 · 713 阅读 · 0 评论 -
3DMax的OFusion插件使用问题
使用OFusion将3D max场景导出为Ogre的Mesh是很常用的方法。这里汇总一些问题方便查阅。1.OFusion获取:http://download.csdn.net/detail/bafghgle/2560230里面还带有中文文档和Demo。这个版本只支持3D Max7,8,9.2.3D Max中OFusion配置打开视图:http://blog.转载 2014-04-22 11:35:45 · 962 阅读 · 0 评论 -
Ogre引擎源码——Timer
一个图形绘制引擎底层有很多工具类(utility),通过读基础工具类源码可以学习到不少东西。 Ogre引擎中与Timer相关的文件大致不多,大致如下(只列出头文件)WIN32/OgreTimerImp.hGLX/OgreTimerImp.hOSX/OgreTimerImp.hiPhone/OgreTimerImp.hOgreTimer.h 其实这部分代码很少,转载 2014-01-24 13:58:05 · 825 阅读 · 0 评论 -
RT Shader System in OGRE 1.7.0 .
OGRE在1.7.0版中,最重要的feature之一就是real-time shader system (RT Shader System),它的功能就是從OGRE的material script中自動產生shader (HLSL/CG或GLSL檔案)來取代或增加原本fix pipeline的功能。 使用RT Shader System好處呢?美術和程式分工以往要要在Ogre中使用no转载 2014-01-23 11:24:43 · 987 阅读 · 0 评论 -
你所不知道的OGRE
首先说明,这个标题只是炒作,可能下面所有的观点看官们早已了然于胸。 Ogre研究的人太多了,在中国更是这样,但很多人都仍然认为Ogre只不过是一个普通的图形引擎而已,并且主要研究的也是Ogre作为普通引擎的部分。但Ogre有自己的特点,不知道大家都注意了没有,反正我是没有注意到,最近看到了一本国外的著作才侥幸的到这些知识。Ogre老大是做软件工程出身,似乎他很讨厌这个工作,但是确实带来了Ogre设转载 2014-01-23 11:47:43 · 843 阅读 · 0 评论 -
延迟渲染(Deferred Shading)技术详解
一、Deferred shading技术简介Deferred shading是这样一种技术:将光照/渲染计算推迟到第二步进行计算。我们这样做的目的是为了避免多次(超过1次)渲染同一个像素。其基本思想如下:1、在第一步中,我们渲染场景,但是与通常情况下应用反射模型计算片断颜色不同的是,我们只是简单的将几何信息(位置坐标,法线向量,纹理坐标,反射系数等等)存储在中间缓冲区中,这样的缓冲区我转载 2014-01-23 11:28:18 · 1234 阅读 · 0 评论 -
Geometry Shader
Geometry Shader(几何元着色器)是继Vertex Shader和Fragment Shader之后,由Shader Model 4(第四代显卡着色架构)正式引入的第三个着色器。在OpenGL3.x中也成为核心,使图形程序开发者在可编程渲染管道(programable render pipline)下能够更大的发挥自由度。由本文开始的一系列乱弹中,Geometry Shader作为基础转载 2014-01-23 11:30:35 · 1459 阅读 · 0 评论 -
HLSL Effect的vertex shader和pixel shader的参数传递 .
HLSL基本以C语言的习惯来写的,但是如果完全以C语言的角度来看,我个人感觉入门最难理解就是顶点着色器和像素着色器的两个函数的参数传递了。 下面以最简单的HLSL中效果框架举例说下自己的理解。 uniform extern float4x4 gWVP; struct OutputVS { float4 posH : POSITION0;转载 2014-01-23 11:32:50 · 1957 阅读 · 0 评论 -
将Shader嵌入Ogre(固定渲染管线到可编程渲染管线) .
引言:一般的,ogre是使用固定渲染管线,嵌入可编程管线,可借助GPU,提供更多更丰富的效果。//-----------------使用脚本加入shader(.material或者.programe使用.hlsl etc)----------1、声明(不是写shader程序) 这儿声明的意思:不是写Shader程序(这个着色程序一般在.hlsl/.glsl/.cg后缀的文件里转载 2014-01-10 15:26:51 · 1495 阅读 · 0 评论 -
Ogre着色方式和光照模型(shading mode vs lighting model)
(1) 着色方式shading Ogre有三种着色方式,分别为shading flat/gouraud/phong。当动态光照打开时,该选项的作用是生成每个顶点的颜色,决定是否在该三角面上插值及如何插值。Flat不进行插值,每个三角面的颜色都由该三角面的第一个顶点色决定;Gouraud对三角面上每个顶点颜色进行线性插值计算;Phong对三角面上的顶点法线进行插值,并以此决定每个像素转载 2014-01-10 15:34:43 · 1848 阅读 · 0 评论 -
几种图形引擎坐标系
最近在几种图形api与渲染引擎环境中来回切换,比较下矩阵运算opengl 右手坐标系 列向量 左乘 列主序存储矩阵osg 右手坐标系 行向量 右乘 行主序存储矩阵d3d 左手坐标系 行向量 右乘 行主序存储矩阵ogre 右手坐标系 列向量 左乘 行主序存储矩阵 osg 底层使用的是opengl ,行向量,由于使用矩阵是行主序存储转载 2014-01-10 15:39:00 · 1974 阅读 · 0 评论 -
OGRE 1.7.2 编译方法
1.想编译OGRE,最起码要有OGRE的源码吧。可以去官方网站下载最新的源码包,我这里用的是1.7.2版本的,下载下来的文件叫 ogre_src_v1-7-2.exe。运行下载下来的程序,解压源码到一个目录下备用。2.下载并安装DirectX SDK,官方建议的版本是 DirectX SDK - February 2010。不同版本的DXSDK可能会造成OGRE编译失败,这个要注意转载 2013-04-11 11:17:46 · 777 阅读 · 0 评论 -
Ogre:Hardwarebuffer
Ogre中的硬件缓存是指在显卡上的存储,这和在内存上的存储一样是可以访问的。有三种硬件缓存:HardwareVertexBuffer(顶点缓存,存储顶点的各种数据)、HardwareIndexBuffer(索引缓存,存储一个mesh的面片的顶点索引),HardwarePixelBuffer(纹理缓存,存储某个纹理贴图的数据)。这些数据在程序运行时都在显卡的存储上,然而你可以去读和写这些数据,来操控转载 2013-03-28 14:14:33 · 947 阅读 · 0 评论 -
Ogre内存池的使用和说明
大家可能会遇到一些Ogre中的内存分配的方面问题,我对这个总结了一下内存分配的方面资料。Ogre在1.7版本后,统一了内存分配策略,提供了内存是否泄漏的跟踪和内存池等比较方便开发的一些策略,目前提供了四种内存分配OGRE_MEMORY_ALLOCATOR 方式: #define OGRE_MEMORY_ALLOCATOR_STD 1 #de转载 2013-01-31 14:12:02 · 622 阅读 · 0 评论