- 博客(141)
- 资源 (22)
- 收藏
- 关注
转载 OGRE框选制作
框选制作首先,一如既往给出框架程序(运行该框架程序看到一个机器人的矩阵): #include #include #include "ExampleApplication.h" class SelectionRectangle : public ManualObject { public: SelectionRectangle(const String &name) : ManualObject(name) { } v
2011-04-29 15:01:00 2073
转载 OGRE关于 Demo_Crowd 例子的分析
<br />关键词: InstancedGeometry 着色程序 动画<br /><br />1)本例的主要函数在CrowdListener::createInstanceGeom<br /> 可以在其中学习如何使用 InstancedGeometry 几何对象, 可用于创建大量实体的几何体<br />2)函数 CrowdListener::buildCrowdMaterial 则可以学习 如何修改一个材质中的子材质, 并给子材质的每个通道增加顶点着色程序<br />3)另外本例可以了解如何控制大量
2011-04-29 13:22:00 1751
转载 OGRE关于 Demo_FacialAnimation 例子的分析
<br />G主要是关于姿势动画的学习, 注意本例的姿势动画只用了一个帧<br /><br />1. 注意CEGUI窗口的处理函数 参数必须为 const CEGUI::EventArgs& e, 否则会出现错误.<br />2. CEGUI窗口的EventSelectStateChanged事件, EventScrollPositionChanged事件等等, 都有相关的处理事件函数<br />3. 使用帧监听器的鼠标缓冲来拦截鼠标事件, 实现对CEGUI窗口的点击和处理<br />4. 重点函数为 ha
2011-04-29 13:21:00 1793
转载 OGRE关于Demo_CubeMapping 的学习
<br />目的: 显示 立方体映射的特色(cube mapping), 还可以设置物体镜面映射出周围的景色<br />主要有两个类 CubeMapApplication 和 CubeMapListener<br /><br />* 该例中对象的周围景象反射是通过设置对象的主材质material实现的, 在脚本中设置了env_map cubic_reflect和cubic_texture属性<br /> 该对象的子mesh则是复制原始mesh中的子mesh, 材质也是复制其子mesh的材质<br />
2011-04-29 13:21:00 2271
转载 OGRE关于 Demo_Instancing 例子的分析
关于 Demo_Instancing 例子的分析<br /><br />1. 本例建立框架模板的时候, 使用release版本编译运行一番, 发现其所用的文件ogre.cfg, plugins.cfg, resources.cfg与debug的版本不同, 链接库也不同.<br /> 空白Ogre程序在release版本下FPS是1050左右, 但是在debug版本下只有90. 差距太大了啊<br />2. 天空盒使用的材质 是立体图 cubic_texture morning.jpg separate
2011-04-29 13:20:00 1967
转载 OGRE关于 Demo_Ocean 例子的分析
关于 Demo_Ocean 例子的分析<br />重要总结:<br />1. 该例主要类不再继承自ExampleApplication和ExampleFrameListener, 重写驱动类和监听类<br />2. 如何创建OIS的输入系统<br /> 1) 创建OIS::ParamList pl;<br /> 2) 调用程序渲染窗口的 getCustomAttribute方法得到窗口WINDOW属性所代表的窗口句柄<br /> 3) 将该窗口句柄插入pl中<br /> 4) 以pl
2011-04-29 13:19:00 2197
转载 ShadowMap
ShadowMap1、原理<br />阴影实时渲染是计算机图形学的高级技术。它能提高场景的真实感。两种通用的阴影渲染技术分别是地图阴影(shadow map)和体积阴影(shadow volumes)。地图阴影的优势在于效率很高,因为地图阴影只需要渲染场景两次(一般来说)。并且不需要进行几何处理和产生额外的mesh。无论多复杂的场景,使用地图阴影总能保持很好的性能。<br />地图阴影的概念很直观。首先,从光线的方向把整个场景渲染到一张纹理上。通过特定的顶点和像素渲染器渲染得到的这张纹理就被叫做地图阴影(s
2011-04-29 13:17:00 6633 2
转载 OGRE关于 Demo_DeferedShading 例子的分析
总结:<br />1. 可以学会克隆一个实体的方法<br />2. 可以根据雅典娜的材质得知顶点着色器的使用, 在事先构建的切线数据(buildTangentVectors)放置于 着色程序的属性 tangent中, 着色程序就可以直接使用该属性<br />3. 学会如何创建一个曲面, 用MovablePlane.<br />4. 实体调用setMeshLodBias设置LOD, 数值越小则越清晰.<br />5. 实现如何创建一个只能拥有一个实例的类 class className : public Og
2011-04-29 13:16:00 3148
转载 简单的继承SimpleRenderable,实现画一个平面
头文件:<br /><br />#ifndef __LINE3D_H__<br />#define __LINE3D_H__<br /><br />#include "Ogre.h"<br />#include <vector><br /><br />using namespace Ogre;<br />using namespace std;<br /><br />#define POSITION_BINDING 0<br />#define TEXCOORD_BINDING 1<br /><br />c
2011-04-28 16:46:00 2028
转载 用OGRE装载和渲染WOW模型
<br />目前只支持一个Mesh,(WOW的 model 里有多个 ModelRenderPass每个 pass代表一个子物体,整个模型只有一套顶点数据,但每个子物体有自己的贴图信息和顶点索引)<br /> <br />还没添加动画,粒子的支持….<br /> <br />一创建支持MPQ的FileSystem<br />class MPQArchive : public Ogre::Archive<br />一个MPQArchive代表一个 .mpq文件<br /> <br />class _OgreP
2011-04-28 16:45:00 2159
转载 让VS2005编辑器支持着色器语法高亮 (其他高亮如lua脚本同理)
1. 创建或编辑usertype.dat文件(此文件在VS安装目录下的Common7/IDE下面,比如我的就在D:/Program Files/Microsoft Visual Studio 8/Common7/IDE/usertype.dat),添加如下的关键字列表,每个单词占一行,如果你想添加你自己的关键字,也可以按照这种方式添加在usertype.dat文件中<br />2. 在vs中打开Tools->Options...->TextEditor->File Extension<br />填写你想使用
2011-04-27 15:42:00 2503
转载 液晶显示器刷新率
<br />在论坛看到不少关于液晶显示器的说法。<br /> 因为xorg本身对显示器的智能支持度不够,引起过很多问题,还出现了部分用户烧毁液晶显示器的情况。<br /> 在这些问题面前,有相当多的人传播了错误的知识:<br /> 液晶显示器没有刷新率,液晶显示器是无所谓刷新率的等等。<br /> 我这里还是先给结论:首先,液晶显示器是有刷新率的,其次,刷新率(或响应时间)对液晶显示器是一个重要的性能指标。<br /> 现在我来详细地阐述一下有关理论。<br /> 首先提第一个概念FPS,它的意
2011-04-27 11:18:00 4332
转载 垂直同步
<br />垂直和水平是CRT中两个基本的同步信号,水平同步信号决定了CRT画出一条横越屏幕线的时间,垂直同步信号决定了CRT从屏幕顶部画到底部,再返回原始位置的时间,而恰恰是垂直同步代表着CRT显示器的刷新率水平。<br /> <br />工作原理 显示器上的所有图像都是一线一线的扫描上去的,无论是隔行扫描还是逐行扫描,显示器,都有2种同步参数——水平同步和垂直同步。 关键部分<br /> 为什么垂直同步的开关会影响CS中的fps值?道理一点都不复杂。首先我们平时运行操作系统一般屏幕刷新率是多少?大概
2011-04-27 11:03:00 2488
转载 理解计算机3D图形学中的坐标系变换
<br /> 要谈坐标系变换,那么坐标系有哪些呢?依次有:物体坐标系,世界坐标系,相机坐标系,投影坐标系以及屏幕坐标系.我要讨论的就是这些坐标系间的转换。<br /> 这些坐标系不是凭空而来,他们都是为了完成计算机3D图形学最最最基本的目标而出现.<br /> 计算机3D图形学最最最基本的目标就是:将构建好的3D物体显示在2D屏幕坐标上.<br /> 初看好像就是将最初的物体坐标系转换到屏幕坐标系就可以了呀,为什么多出了世界坐标系,相机坐标系,投影坐标 系。这是因为:在一
2011-04-27 09:33:00 8167 1
原创 pitch yaw roll 最直观的解释
<br />pitch():将物体绕X轴旋转(localRotationX)<br /><br />yaw():将物体绕Y轴旋转(localRotationY)<br /><br />roll():将物体绕Z轴旋转(localRotationZ)<br />
2011-04-27 09:28:00 11360 2
转载 ogre 模型读入 和 产生 阴影
<br />#include "ExampleApplication.h"<br />class MyApplication : public ExampleApplication<br />{<br />public:<br /> MyApplication() {<br /> }<br /> ~MyApplication() { }<br />protected:<br /> // Just override the mandatory create scene method<br /> virtu
2011-04-26 18:36:00 1772
转载 OGRE scene_blend
这种融合方式用于场景中当前通道。textureunit中的纹理融合运算是用于纹理层的融合,而这个融合是把这个通道的输出作为一个整体链接到渲染目标的当前内容。因此,这种融合支持物体透明度的设置和其他一些特性。它有两种定义形式,一种用于预定义融合类型,一种支持手动调节源和目标的要素。形式1: scene_blend 例子: scene_blend add下面以简单形式列举常用的融合参数:add 渲染输出的颜色加到场景中。相当于scene_blend one onemodulate
2011-04-26 09:27:00 2987
转载 Speedtree 剔除优化原理
MotivationThis section outlines a culling algorithm specifically designed for rendering very large forests and has been tested on forests as large as 10,000,000 trees covering 1,600 square miles. A
2011-04-25 16:49:00 3466 1
转载 OGRE顶点程序与片断程序的声明
顶点程序与片断程序的声明为了在你的材质中使用顶点或者片断程序(参看:3.1.9 在渲染通路中使用顶点程序和片断程序),首先你必须定义它们。一个程序定义可以被多个材质使用,唯一的前提条件是必须在引用它之前在材质的渲染通路部分中定义。 程序定义可以被嵌套在.material脚本内(在这种情况下,它必须位于任何对它的引用之前,即必须先定义后引用)或者如果你希望跨多个.material脚本使用同一个程序,你可以在一个外部的.program脚本中定义。程序定义的方式与在.program或者.material脚本中一样
2011-04-25 16:44:00 3389
转载 OGRE在渲染通路中使用顶点程序和片断程序
3.1.9 在渲染通路中使用顶点程序和片断程序<br />在材质脚本的pass段中,你可以引用.program脚本中定义的顶点程序和/或片断程序(详见3.1.4 顶点程序与片断程序的声明)。这些程序与使用他们的渲染通路分开定义,是因为他们很可能在多个分开的材质间被重复使用,更可能跨越多个不同的.material材质脚本,所以这种方法可以让你只定义一次而多次使用。 <br />如前文所述命名程序一样,你也可以向它提供参数。下面是一个简单的例子: vertex_program_ref myVertexProgr
2011-04-25 16:43:00 3254
转载 VC调试的时候 “没有调试信息,未加载符号”解决方法
<br />其实我重新生成项目就解决了这个问题,不过还是贴一篇挺详细的调试入门在这,怕以后有用<br />http://www.vckbase.com/document/viewdoc/?id=924<br />概述<br />调试是一个程序员最基本的技能,其重要性甚至超过学习一门语言。不会调试的程序员就意味着他即使会一门语言,却不能编制出任何好的软件。<br />这里我简要的根据自己的经验列出调试中比较常用的技巧,希望对大家有用。<br />本文约定,在选择菜单时,通过/表示分级菜单,例如File/Ope
2011-04-25 16:42:00 3600 1
转载 Vertex Shader 结构
我们将通过下面这个Vertex Shader结构的图形模型来进入Vertex Shader的世界:在Vertex Shader中的所有数据都被表现为128-bit的四元数(4 x 32-bit):因为使用一个指令但处理一组数据,一个Vertex Shader的硬件可以被看成是一个典型的SMID(单指令多数据)处理器。Vertex Shader使用的这种数据格式非常的
2011-04-24 11:35:00 3524
转载 Shader学习心得
以下的教程由乌龟和毛驴的技术小屋原创,转载请注明原始文章出处,并保留这段话,请勿侵权. 1.1 序言 以前一直觉得,学习shader最好是在Visual Studio的环境下进行学习,因为这样不仅能够学到DirectX和C++的一些使用方法,而且对于Shader在实际应用时也有好处.结果今天就碰得灰头土脸的. 1.2 碰壁过程 下面是我的程序段:
2011-04-24 11:29:00 3269
转载 你所不知道得Ogre
<br />首先说明,这个标题只是炒作,可能下面所有的观点看官们早已了然于胸。 <br /> <br />Ogre研究的人太多了,在中国更是这样,但很多人都仍然认为Ogre只不过是一个普通的图形引擎而已,并且主要研究的也是Ogre作为普通引擎的部分。<br />但Ogre有自己的特点,不知道大家都注意了没有,反正我是没有注意到,最近看到了一本国外的著作才侥幸的到这些知识。<br />Ogre老大是做软件工程出身,似乎他很讨厌这个工作,但是确实带来了Ogre设计上的特点。<br />首先是场景图的管理,一般而
2011-04-24 11:21:00 1938
转载 将Shader嵌入Ogre(固定渲染管线到可编程渲染管线)
<br />引言:一般的,ogre是使用固定渲染管线,嵌入可编程管线,可借助GPU,提供更多更丰富的效果。<br />//-----------------使用脚本加入shader(.material或者.programe使用.hlsl etc)----------<br />1、声明(不是写shader程序)<br /> 这儿声明的意思:不是写Shader程序(这个着色程序一般在.hlsl/.glsl/.cg后缀的文件里面),而是用于设置ogre与Shaer的桥梁,内容就是shader文件源和一
2011-04-24 11:15:00 3566
转载 关于speedtree的spt文件和stf文件
用场景来分析的话,一个场景是.stf文件(Speed Tree Forest).该文件描述了每棵树的相关属性。而一棵树是通过一个.spt(Speed Tree)文件来描述的.用文本编辑器打开,就能看到里面记录了该树的所有信息。而该插件为此开发了配套了树木编辑器材。使用该编辑器,打开.spt文件之后,就可以对该树进行浏览以及编辑。 What is .spt and how to open .spt file.spt, namely SpeedTree Data file, is a Tree Data fil
2011-04-23 18:25:00 6602
转载 Linux2.6.19.x内核编译配置选项详解
转载于:http://lamp.linux.gov.cn/Linux/kernel_options.html作者:金步国Code maturity level options代码成熟度选项Prompt for development and/or incomplete code/drivers 显示尚在开发中或尚未完成的代码与驱动.除非你是测试人员或者开发者,否则请勿选择General setup常规设置Local version - append to kernel release 在内核版本后面加上自定
2011-04-23 17:11:00 4409
转载 VC++编译选项详解
优化-[]================================================================================[]/O1 最小化空间 minimize space /Op[-] 改善浮点数一致性 improve floating-pt consistency /O2 最大化速度 maximize speed /Os 优
2011-04-23 17:07:00 2232
转载 Ogre手动加载骨骼动画
<br /><br />如果自己设置骨骼/mesh目录,还要手动修改resources.cfg文件,将骨骼/mesh目录添加进去,否则程序会崩溃01///初始化骨骼动画参数 02Animation::setDefaultInterpolationMode(Animation::IM_LINEAR); 03Animation::setDefaultRotationInterpolationMode(Animation::RIM_LINEAR); 04 05///得到实体 06Ogre::Entity*
2011-04-22 14:56:00 2019
转载 Ogre手动绘制模型以及添加材质
<br />1.用Ogre来绘制一个立方体ManualObject* cube;cube = mSceneMgr->createManualObject("cube");cube->begin("cubeMaterial"); // 顶点 cube->position( -100, -100, -100); //0 cube->colour(0.0, 0.0, 0.0); cube->position( 100, -100, -100); //1
2011-04-22 14:54:00 3434
转载 Ogre的官僚主义批判
<br />Ogre的Manager真是多啊,就象个官僚公司,干事的没几个,一堆的Manager,个个丫还都是Singleton.说自己是Singleton却又public构造函数,让人来new它.在第1次被new的时候,偷偷地将this赋给静态成员ms_Singleton,第2次new它就要assert喊冤了,当然这都是叫Singleton的模板基类的那个构造函数干的(典型的小人行径,见不得光).Manager一多,本来不复杂的事,也变得复杂了.<br />1.LogManager<br />a.全局单体
2011-04-22 14:53:00 2498
转载 Ogre的WeaponTrail (刀光)
<br />就是刀光拖尾效果,这个挺有意思,Ogre竟然单写了一个类来实现这个功能。名字叫做RibbonTrail。<br />不过这个类似乎并不太好用,实现的效果是从手握武器的位置沿相对衬的两个方向延伸出片,这样的话,如果手里是把剑,那么效果就不对了。如果手里的武器是长枪,因为手握得位置也不是正中间,所以也不对。。。。<br /> 于是又有人写了一个WeaponTrial类来解决这个问题。但是他没有处理缩放问题,所以在连接点从父节点带来的缩放矩阵影响下,刀光的宽度就会有问题,除非你的人物的骨骼完全没有缩
2011-04-22 14:48:00 2550 1
转载 从零创建最简单的 ogre 程序
一般的 ogre 教程貌似都是从已有的例子框架开始创建 ogre 程序的,这篇文章教你从零开始,创建一个能显示一条龙的 Ogre 程序,这个程序只有最少的代码,没有其他功能,方便你理解 ogre 的一些基本概念。开始一个新的 Win32 程序,你可以删除所有代码,只需要保留 WinMain 的声明。(让我们从零开始)在 stdafx.h 里添加头文件包以及 lib 文件引用: #include #pragma comment( lib, "OgreMain.lib" ) 准备工作完成,让我们开始改造 Wi
2011-04-21 13:22:00 1926 2
转载 运行时库
<br /> 在计算机程序设计领域,运行时库是一种被编译器用来实现编程语言内置函数,以提供该语言程序运行时(执行)支持的一种特殊的计算机程序库。这种库一般包括基本的输入输出或是内存管理等支持。 <br /> 运行时库由编译器决定,以面向编程语言,提供其最基本的执行时需要。比如Visual Basic需要复杂的运行时库支持而C的运行时库则相对简单。 <br /> 当然这还是由编译器厂商决定的。运行时库中的函数可能对程序员透明,也可能不透明。这也是由编译器厂商忖度语言执行环境的需求而决定的。 <br />
2011-04-21 09:38:00 1080
转载 Visual C++中的C运行时库浅析
1.概论 运行时库是程序在运行时所需要的库文件,通常运行时库是以LIB或DLL形式提供的。C运行时库诞生于20世纪70年代,当时的程序世界还很单纯,应用程序都是单线程的,多任务或多线程机制在此时还属于新观念。所以这个时期的C运行时库都是单线程的。 随着操作系统多线程技术的发展,最初的C运行时库无法满足程序的需求,出现了严重的问题。C运行时库使用了多个全局变量(例如errno
2011-04-21 09:32:00 1403
转载 errno的启示
<br />一、errno的由来<br /> 在C编程中,errno是个不可缺少的变量,特别是在网络编程中。如果你没有用过errno,那只能说明你的程序不够健壮。当然,如果你是WIN32平台的GetLastError(),效果也是一样的。<br /> 为什么会使用errno呢?个人认为,这是系统库设计中的一个无奈之举,他更多的是个技巧,而不是架构上的需要。我们观察下函数结构,可以发现,函数的参数返回值只有一个,这个返回值一般可以携带错误信息,比如负数表示错误,而正数表述正确的返回值,比如recv
2011-04-21 09:29:00 1413
转载 speed tree技术分析
两年前第一次下载speed tree demo运行时,立刻被精美的画面所震撼,场景中大片的树木尤其吸引我的眼球,speed tree使用何种技术来渲染大范围的植物一直令我不解。因为在很多游戏中对树木的渲染都可以很明显地看到多边形的痕迹,而在speed tree中你几乎看不到任何破绽,繁茂的树叶、精确的光照、shadow、self-shadow,这些元素构造起了一个完美的树木。 直到前几个月无意中玩完美世界时发现它使用了speed tree来渲染树木,由于洪恩丑陋的美工得以使我发现了其中的端倪。我立刻
2011-04-20 10:13:00 4162 1
转载 Next-Generation SpeedTree Rendering 下一代SpeedTree渲染
【译】《GPU GEMS 3》----Next-Generation SpeedTree Rendering 翻译[1] 收藏<br /> 最近在研究树木的渲染,看了一些相关的技术说明,几乎都是老外写的,再次为中国游戏产业的前景感到担忧。看了几天的英文,索性也把其中的重要部分翻译了出来,在这里与大家共享,先贴出《GPU GEMS 3》第4章的翻译,第一次写翻译,不免有错漏的地方,欢迎大家指出。如需转载,请先与本人联系。name:LeYond ,qq:413952706<br />第四章 下一代
2011-04-18 16:34:00 4334 1
转载 SpeedTree学习笔记
最近拿到SpeedTree资料,开始学习,并用到项目里去.1. 该插件的特点:api无关。它本身只是数据结构和逻辑架构,没有任何渲染语句子,因此为了把它应用到自己的引擎里,需要为之添加渲染相关的语句。而根据sdk的讲解,推荐用户为之搭建中间架构,用来联系SPEEDTREE与自己的引擎。这样做起码有两点好处,搭建的中间架构(也推荐别加任何api相关的语句),因此,即使你以后换了api(譬如从gl换成dx),中间架构还是可以继续沿用的。还有一个好处就是,当speedtree更新版本的时候,你也无须修改你的引擎
2011-04-18 13:43:00 8330 2
转载 天龙八部GridInfo读取源码
转自:http://www.cppblog.com/mybios/archive/2008/03/09/44046.aspx<br />天龙八部GridInfo文件的格式已经有人公布了,在这里:http://www.mobilegamebase.com/blog/article.asp?id=17<br />不过,此文中有点笔误的地方,就是那个nFirstLayerOP的位标记的描述有点错误,正确的应该如下:<br /> // 图片水平翻转,即左右翻转<br />#define FLIP_HORIZINTA
2011-04-15 15:30:00 2049
Real-Time Adaptive Scalable TextureCompression for the Web.pdf
2020-12-25
IMPROVED ENCODING FOR COMPRESSED TEXTURES.pdf
2020-12-25
Developer_Track_5_ASTC-The_Future_of_Texture_Compression.pdf
2019-10-28
PowerVR.Supported+Extensions.OpenGL+ES.EGL.pdf
2018-08-16
OpenGL Direct3D 撰写的各种3D图形算法演示
2010-02-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人