Ogre
文章平均质量分 67
damenhanter
这个作者很懒,什么都没留下…
展开
-
水面渲染小结
水面渲染小结 本文版权归我所有,仅供个人学习使用,请勿转载,勿用于任何商业用途。由于本人水平有限,难免出错,欢迎大家和我交流。作者:claymanBlog:http://blog.csdn.net/soilworkclayman_joe@yahoo.com.cn 从几何模型上来看,水面其实和地面是一样的,可以看做普通的均匀网格,不同点在于转载 2017-03-11 16:16:28 · 2869 阅读 · 1 评论 -
投影纹理映射(Projective Texture Mapping)详解
投影纹理映射(Projective Texture Mapping)目的是映射一张纹理到物体上,就像将幻灯片投影到墙上一样。该方法不需要在应用程序中指定顶点纹理坐标,实际上,投影纹理映射中使用的纹理坐标是在顶点着色程序中通过视点矩阵和投影矩阵计算得到的,通常也被称作投影纹理坐标(coordinates in projective space)。而我们常用的纹理坐标是在建模软件中通过手工调整纹理和3转载 2014-03-29 23:19:28 · 9435 阅读 · 0 评论 -
写给笨人的法线贴图原理
我算个笨人吧.笨人以前弄懂一些东西后,讲给笨人听往往更有效.看之前请自行具备图形学关于光照的基础知识. >> world/object space normal map 我们先讲基于世界或模型坐标的法线贴图(world/object space normal map).不常用,但是基础. 首先,请无视你之前google到的所谓通过Photoshop生成法线贴图类似文章,美术除外转载 2014-03-29 11:28:09 · 21687 阅读 · 6 评论 -
OGRE1.8.1+MyGUI3.2.0+VS2010 编译配置图文详解
http://www.ogre3d.org/下载ogre_src_v1-8-0.exeOgreDependencies_MSVC_20101231.zipboost可以安装也可以不安装,建议安装,用 Boostpro Boost Installers安装即可参考下面网站:http://www.cnblogs.com/leiben/archive/2011/02/08转载 2014-02-27 20:28:12 · 1287 阅读 · 0 评论 -
ogre+mygui配置
一、前期准备 VS2010的安装没什么好说的,下载后安装好就行了,主要是OGRE和MyGUI的编译配置。 1.OGRE SDK:http://www.ogre3d.org/download/sdk (我用的OGRE版本为OGRE 1.8.1 SDK for Visual C++ .Net 2010 (32-bit))。 2. OGRE App Wizard(OGR转载 2014-02-27 20:29:15 · 2212 阅读 · 3 评论 -
DirectX视口变换矩阵详解
视口变换在投影变换之后,视口变换的作用是将投影平面上的点转换为屏幕上的点,这是一个缩放的过程。投影变换的作用是将viewing frustum(视景体)中的场景投影到一个平面上,这个平面就是投影平面,在DirectX中,使用近剪裁平面作为投影平面(z=1),关于透视投影的矩阵求解,请参考透视投影详解视口变换则是将这个cuboid中的物体变换到视口中,见下图。其中cubo转载 2013-12-23 23:05:29 · 2451 阅读 · 0 评论 -
仿射变换(Affine Transform)
仿射变换,对应于一个矩阵和一个向量的乘法。举例:在仿射变换中,我们使用了齐次坐标,其目的是为了平移变换。仿射变换保证了图形的straightness(变换后,直线仍直,曲线仍曲)和parallelness(图形间的相对位置关系不变,平行线仍为平行线,且直线上点的位置顺序保持不变,但向量间的夹角可能发生变化)。仿射变换包括:平移(translation),缩放(scale),转载 2013-12-20 23:41:38 · 1185 阅读 · 0 评论 -
DX透视投影详解
概述投影变换完成的是如何将三维模型显示到二维视口上,这是一个三维到二维的过程。你可以将投影变换看作是调整照相机的焦距,它模拟了为照相机选择镜头的过程。投影变换是所有变换中最复杂的一个。视锥体视锥体是一个三维体,他的位置和摄像机相关,视锥体的形状决定了模型如何从camera space投影到屏幕上。最常见的投影类型-透视投影,使得离摄像机近的物体投影后较大,而离摄像机较远的物体投影后转载 2013-12-15 08:59:20 · 1975 阅读 · 0 评论 -
DX正交投影
正交投影正交投影,之所以这么称呼是因为所有的投影线都与最终的绘图表面垂直,是一种相对简单的投影技术。视域体---也就是包含所有你想显示的几何体的可视空间---是一个将被变换到规范视域体的轴对齐盒子,见图2 图2: 正交投影正如你看见的,视域体由6个面定义:因为视域体和规范视域体都是轴对转载 2013-12-15 10:42:13 · 3351 阅读 · 1 评论 -
D3D Frustum裁剪原理
Frustum裁剪原理" title="D3D Frustum裁剪原理" style="border:0px; margin-bottom:8px; clear:both; max-width:758px; vertical-align:top">概念介绍Frustum裁剪是CLOD中很重要的一个算法,很多文章都是一句话就过去,或者直接给出代码。但是数学推导很少给出,本文章转载 2013-12-15 19:01:49 · 776 阅读 · 0 评论 -
用OgreMax插件从3ds max导出ogre模型文件(.mesh/.skeleton)
OgreMax是一个3ds max插件, 用来从3ds max中导出ogre格式的模型文件. 它的使用步骤如下: 1. 安装3ds max2. 安装OgreMax插件. 从http://www.ogremax.com/downloads中下载OgreMax并安装. 安装前确认下列组件已经安装,不然OgreMax插件无法正常工作:Visual C++ 2005 R转载 2014-04-18 13:46:37 · 3467 阅读 · 0 评论 -
Ogre的mesh和skeleton文件数据格式分析
首先看一下skeleton文件,skeleton文件描述和记录了物体的骨骼和动画情况。[html] view plaincopyprint?skeleton> bones>.... bonehierarchy>... animaions>... skeleton> 从上面得转载 2014-04-18 13:47:16 · 4397 阅读 · 0 评论 -
DirectX backface culling(背面剔除)
先看一下什么是backface,有backface必然就有frontface,在DX中,frontface是这样定义的,按照顶点定义的先后顺序,呈顺时针排列的顶点构成的三角形是frontface(以view space为参考),与frontface相对的面则是backface,如下图所示。可见决定frontface的因素有两个顶点定义的先后顺序顶点的排列方向-顺时针或者逆时针(由顶转载 2016-11-26 14:24:02 · 2176 阅读 · 0 评论 -
批次
[Direct3D] 实现批次渲染、硬件 T&L 的渲染器和 D3DPipeline在是否从 D3DRender 提供顶点缓存区操作给流水线时做了一些权衡,最后决定暂时使用 IDirect3DDevice9::DrawPrimitiveUP 来渲染,因为它更容易书写,而且开销是一次顶点拷贝,流水线也不用操心对缓存的使用。D3DPipeline 并不是完整的,其涉及到从场景管理器转载 2016-11-29 22:45:38 · 1613 阅读 · 0 评论 -
Directx 11中垂直同步的设置
1、什么是垂直同步? 垂直同步又称场同步(Vertical Hold),从CRT显示器的显示原理来看,单个象素组成了水平扫描线,水平扫描线在垂直方向的堆积形成了完整的画面。显示器的刷新率受显卡DAC控制,显卡DAC完成一帧的扫描后就会产生一个垂直同步信号。当我们选择\"等待垂直同步信号"(即打开垂直同步)时,显卡绘制3D图形前会等待垂直同步信号,性能强劲的显卡则会提前完成渲染,并在转载 2016-11-28 23:05:35 · 2309 阅读 · 0 评论 -
无限风光 : 近来地形算法学习小结
目录-写在前面-本文话题整体观-概念(Concepts): 入门须知 -高度图(HeightMap) -分形(Fractal) -过程生成(Procedure Generation) -地形纹理(Terrain Texture) -细节纹理(Detail Texture) -LOD(Level Of Detai转载 2016-09-11 16:43:20 · 3860 阅读 · 0 评论 -
Ogre MeshLod实现
Ogre MeshLod的LodMesh由两种方式生成。一种是在美术的建模工具中生成具体各个Lod层级的网格mesh,在本体Mesh数据中中指定各个Lod层级的MeshName,然后在Entity初始化函数中生成各个mesh,放到mLodEntityList中。在Entity::_updateRenderQueue()中根据mMeshLodIndex和mLodEntityList决定渲染使用的具体原创 2016-07-24 22:29:48 · 1582 阅读 · 0 评论 -
ODBC API开发教程1
第 1 章 介绍... 2第 2 章 ODBC API访问数据库... 22.1 ODBC简要介绍... 22.1.1 在没有ODBC以前... 22.1.2 ODBC介绍... 32.1.3 ODBC结构... 32.1.4 ODBC的一致性... 42.2转载 2014-11-27 01:30:56 · 2230 阅读 · 1 评论 -
开源zlib库使用心得
前篇:最近在做的一个项目中需要用到数据传输,为了节省流量,需要对传输的数据进行压缩。由于之前对这方面不是太了解,在网上搜索了下,决定使用大名鼎鼎的zlib库。下载地址:http://www.zlib.net/ 最新的版本为1.2.7下载后的文件解压缩有,是一个源代码包,需要重新编译才能使用。博主的开发环境用的是VS2010.编译过程转载 2014-06-14 11:05:05 · 6083 阅读 · 2 评论 -
vs2008编译zlib库32位及64位
vs2008编译zlib库32位及64位 这里以1.2.5为例,当前最新的版本1.2.7,方法应该都是通用的。32位版本 1、下载并解压缩zlib-1.2.5.tar.gz官网http://www.zlib.org(最近打不开),所以我上传了一份在资源,下载地址:http://download.csdn.net/detail/shellching/4689转载 2014-06-14 10:53:00 · 1942 阅读 · 1 评论 -
tinyXML使用
TinyXML是一个C++的XML解析库,网上的评价都不错,是一个轻量级的XML解析库。关于TinyXML使用的文章有很多,而且官方也有完整的文档,这里只是简单把自己使用记录写下来,方便以后查阅。 一个XML文档例子:(文章后面会把这个XML当作例子使用) test.xml --> Persons> Person ID="转载 2014-04-26 12:15:19 · 9266 阅读 · 0 评论 -
DX视图变换
什么是View Transform我们可以用照相机的原理来阐释3D图形的绘制过程,想象一下,我们在摄影的时候都需要做哪些工作,大致可分为如下几个步骤摆放好待拍摄的物品,或者人物。调整好拍摄角度。调整焦距。拍摄。好了,来分析一下,上面的第一步就相当于世界变换了,将一个模型置于一个公认的坐标系中,这里所谓的公认,也就是大家都遵守的,目的是保证待拍摄的物体和照相机在同一个坐标系。第二步相转载 2013-12-15 09:01:28 · 1208 阅读 · 0 评论 -
八叉树算法
Octree的定义是:若不为空树的话,树中任一节点的子节点恰好只会有八个,或零个,也就是子节点不会有0与8以外的数目。那么,这要用来做什么?想象一个立方体,我们最少可以切成多少个相同等分的小立方体?答案就是8个。再想象我们有一个房间,房间里某个角落藏着一枚金币,我们想很快的把金币找出来,聪明的你会怎么做?我们可以把房间当成一个立方体,先切成八个小立方体,然后排除掉没有放任何东西转载 2013-10-20 22:54:17 · 7699 阅读 · 0 评论 -
说说Ogre的GPUProgram的参数管理
首先分享一个我做的图,没有严格按照UML规范,主要是要表达这样的一个意思而已。[原图:http://ishare.iask.sina.com.cn/f/7863351.html ] 首先需要明确一些这样的信息: 1.每个高级Shader语言都可以编译成汇编代码的形式。在cg中我们使用cgGetProgramString,DX有API可以转载 2013-10-04 17:12:35 · 984 阅读 · 0 评论 -
zlib inflate z_stream
typedef struct z_stream_s { Bytef *next_in; uInt avail_in; uLong total_in; Bytef *next_out; uInt avail_out; uLong total_out; char *msg原创 2013-02-22 00:47:25 · 5583 阅读 · 0 评论 -
Ogre文件系统
二、文件容器和文件管理OGRE 文件系统的核心是 Archive 和 DataStream。其中:Archive 泛指文件容器,可以是文件夹,也可以是压缩包,甚至可以为远程位置(Ogre1.06 还未发现有此功能)。DataStream 完成与 std::basic_istream 相同的功能,它既可以读取普通的文件,压缩文件,以及内存文件等。 1、Archive 为完成原创 2013-02-23 00:16:25 · 1591 阅读 · 0 评论 -
OGRE+CEGUI编译配置
ogre 1.7.0的下载、配置和编译指南----------------------------------------------- 1. ogre 1.7.0的下载地址:https://sourceforge.net/projects/ogre/files/ogre/1.7/ogre-v1-7-0.zip/download2. ogre 1.7.0依赖库的下载地址(不定期更新,请转载 2012-11-04 17:43:24 · 627 阅读 · 0 评论 -
CMake构造OGRE
这段时间开始对Ogitor感兴趣,想找到它的源码学习一下,无意中发现Ogre v1.70出来了.而1.7版本开始转向使用Cmake编译,对于新接触的东西自然有些好奇.于是试着用Cmake来编译OGRE V1.7.首先上OGRE官网上看了用CMake构建OGRE,不太懂,接着又看了看别人写的文章,感觉还是没有多少实质性的效果.于是自己查了下CMake的使用,弄了一会,基本上work.先下载了转载 2012-10-23 21:15:51 · 2954 阅读 · 0 评论 -
使用CMake构建Ogre工程文件时的一些小细节
CMake 是个跨平台的自动化建构系统,简单说就是可以用它生成工程文件,在比如vs的sln文件,或者linux下常用的makefile。基本教程在 http://www.ogre3d.cn/ 可以找到一篇不错的图文教程在这里:http://hi.baidu.com/houwenbin1986/blog/item/c51a361e46b636c4a78669bb.html转载 2012-10-23 21:04:02 · 664 阅读 · 0 评论 -
nedmalloc结构分析
nedmalloc是一个跨平台的高性能多线程内存分配库,很多库都使用它,例如:OGRE.现在我们来看看nedmalloc的实现 (以WIN32部分为例) 位操作小技巧;i.获取最低位的出现位置的掩码;x&(-x)ii.判断值为2的幂:x & (x-1) == 0iii.获取从最低的值为1的位开始到左边MSB的掩码: x | (-x)iv.字节对齐;(x + 2^m)转载 2012-10-21 17:03:44 · 4081 阅读 · 2 评论 -
关于游戏中的材质系统
材质,这个词有各行各业都有自己的解释。美工把物体贴图和物体颜色,高光等统称为材质。D3D和OPENGL这样的图形接口则把物体表面贴图单独叫做纹理,而把漫反射,高光等叫做材质。而在游戏引擎或图形引擎中提到的材质,则与此不同。 引擎中提到的材质不仅上面的的内容。 引擎中所谓的材质,是指物体在渲染时一系列的状态控制。 如,ALPHA混合开关以及ALPHA混合因子、纹理过虑方式,纹理通道状态、纹理转载 2012-09-02 11:09:57 · 875 阅读 · 0 评论 -
如何阅读一款游戏引擎
要带着引擎系统所共有的问题去阅读,不要被具体引擎的实现思路牵着走,要思考这个引擎如何实现或绕过(如不考虑低端机)这些必然要面临的问题.首先,最重要的必须,在Debug模式下调试起来一个主场景程序,然后沿着代码流走几遍,在代码里闲逛,生成第一印象,留意基础工具设施类(如字符串内存管理),大约3小时.然后带着如下每一个问题(不分先后)去走流程,走逻辑,弄清引擎的业务处理方法.1.S转载 2012-08-20 00:03:01 · 578 阅读 · 0 评论 -
Ogre学习记录
1: 设计初衷它设计初衷是完全跨平台的。抽象的接口隐藏了平台相关的细节。它设计初衷是大幅度支持扩展的。支持多种场景类型,独立出平台和3D接口限制。2: 基本类结构关系Roo:对象为一切的入口,它负责创建Ogre的所有基础元素,三大基础元素大致包括:场景管理器,绘制系统,资源管理器。场景管理器:场景节点,动态对象。资源管理器:资源组管理,资源管理渲染模块:硬件缓冲区管理,转载 2012-08-20 00:07:00 · 1023 阅读 · 0 评论 -
四元数与旋转
一.四元组基础Q(x,y,z,w),其中x,y,z用来确定旋转轴,w为旋转的角度Q=w+xi+yj+zk,i,j,k为三个虚轴的单位分量I*j=kJ*k=i;K*i=j;叉乘:c=a × b= | i j k| |a1 b1 c1| |a2 b2 c2| =(b1c2-b2c1,c1a2-a1c2,a1b2-a2b1)c也为一转载 2013-03-26 23:44:16 · 939 阅读 · 0 评论 -
Ogre:Hardwarebuffer
Ogre中的硬件缓存是指在显卡上的存储,这和在内存上的存储一样是可以访问的。有三种硬件缓存:HardwareVertexBuffer(顶点缓存,存储顶点的各种数据)、HardwareIndexBuffer(索引缓存,存储一个mesh的面片的顶点索引),HardwarePixelBuffer(纹理缓存,存储某个纹理贴图的数据)。这些数据在程序运行时都在显卡的存储上,然而你可以去读和写这些数据,来操控转载 2013-03-26 22:48:26 · 591 阅读 · 0 评论 -
Ogre引擎源码——资源之GpuProgram
GpuProgram在Ogre中是以Resource的形式保存。GpuProgram部分的头文件涉及如下:OgreGpuProgram.hOgreGpuProgramManager.hOgreGpuProgramParams.hOgreGpuProgramUsage.hOgreHighLevelGpuProgram.hOgreHighLeve转载 2013-10-04 17:11:57 · 747 阅读 · 0 评论 -
Ogre引擎源码——资源之Font
Resource部分源码已经解读过了,对Ogre如何管理Resource的流程有了一定的了解。下面就来具体看下每种资源的实现。Ogre中的Resource共用如下几种:Texture、Compositor、Font、GpuProgram、Material、Mesh、Skeleton、BspLevel本文的主角是Font相关的头文件有:OgreFont转载 2013-10-04 11:08:56 · 707 阅读 · 0 评论 -
Ogre空间变换,setPosition(),setDerivedPosition()和translate()的正确使用。
在Ogre里,节点的位置移动可以使用Node::setPosition(p)和Node::translate(p1,p2)来个空间变换函数,其中设置位置函数setPosition() 只有一个参数—一个三维坐标点,它是相对要移动节点的父节点而言的。相对父节点位置偏移的例子(以父节点的位置为坐标原点):ParentNode WorldPosition(0,10,0)转载 2013-10-01 10:59:24 · 2994 阅读 · 0 评论 -
解决Ogre1.81大量警告问题
最近无聊,编译OGRE玩,发现新版的警告比较恶心,网上一查,貌似很多人在问,这里是解决方法:#pragma warning(push)#pragma warning(disable:4251)#pragma warning(disable:4275)#pragma warning(push)#pragma warning(push)#pragma warning(pus转载 2013-05-28 01:04:08 · 723 阅读 · 0 评论 -
论OGRE中关于物体的旋转与朝向.
有几个知识点这时先复习一下:表示物体的旋转的方法有多种:()一个旋转矩阵 (直接将点向量*该矩阵结果就是旋转后的效果)()欧拉角,即 pithc(绕X轴),yaw(Y),roll(Z),实质上,这是把绕任意转的旋转分解为绕X,Y,Z三个轴旋转的合成. 而恰恰,绕一个坐标轴转的计算比较简单.(很多书上都有讲,也易理解)(3四元数()轴角法.即通过所讲的:绕A轴转a度.转载 2013-05-11 17:38:38 · 1046 阅读 · 0 评论