Tag: 程序预览模式: 普通 | 列表

Ogre中透明实现方法

最近做的一个项目需要淡入淡出的效果。但是在Ogre中没有对透明进行代码级支持,所以需要自己实现这个功能。

基本思路是对材质进行一些处理,但是要保证最终是对entity进行透明控制。
所以我们不能直接把本身材质拿来修改。因为如果这样的话所有用到这个材质的实体的都会被修改掉。所以我们要先把本身的材质克隆一下再贴到实体上。

查看更多...

Tags: 教程 一起学 程序 OGRE 透明

分类:Tech | 固定链接 | 评论: 2 | 引用: 0 | 查看次数: 3368

Ogre教程第四篇

在这篇教程里将说一些跟输入输出相关的东西。提到输入输出就需要提出一个帧监听(FrameListener)的概念。在Ogre中我们可以注册一个类去接收消息当一帧被渲染到屏幕之前和之后。FrameListener接口定义两个函数:

分别是:

bool frameStarted(const FrameEvent& evt)
bool frameEnded(const FrameEvent& evt)

在Ogre的主循环(Root::startRendering)中,首先是Root object在所有注册的FrameListeners中调用frameStarted方法,然后Root object会渲染一帧,最后调用frameEnded方法。这样直到有任意一个FrameListerner的frameStarted后者frameEnded函数返回flase为止。这些函数的返回值的主要意思是“保持渲染”。如果返回否程序就会退出。

查看更多...

Tags: 图形学 图形引擎 教程 一起学 程序 输入输出

分类:Tech | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 2866

Ogre教程第三篇

这篇教程将讲解摄像机和视口的一些简单用法。

在3D游戏中摄像机是一个非常重要的东西。他用来观察所有的场景。摄像机有点类似一个场景节点,可以设置它的位置,以及对他进行偏移、滚动、倾斜等操作。摄像机的位置是跟父节点有关的。视口可以理解为使摄像机和场景的一个交集。当我们需要处理多个摄像机来观察场景时,视口就显得非常重要了,比如在console game中两个人或者几个人可以互不干扰的观察者同一个场景的不同角度,就需要这样的技术了。

下面我们要利用ogre里面的一些方法来建立一个视口,并把它提供给正在使用的摄像机。 

//创建一个视口
Viewport* vp = mWindow->addViewport(mCamera);
//下面要做的是设置背景颜色,为了以后处理光照,在这里我把背景设置成黑色
vp->setBackgroundColour(ColourValue(0,0,0));
// 设置摄像机的纵宽比,这是对4/3屏幕而言的一个默认值,如果是16/9的屏幕需要改变纵宽比。
mCamera->setAspectRatio(Real(vp->getActualWidth()) / Real(vp->getActualHeight()));

Tags: 图形学 图形引擎 教程 一起学 程序 摄像机 视口

分类:Tech | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 2976

Ogre教程第二篇

这一章节里将做一些布置场景最基本的工作。包括添加一些实体等。
首先我们需要继承ExampleApplication。
#include "ExampleApplication.h"
class MyApplication : public ExampleApplication
{
protected:
public:
MyApplication()
{
}
~MyApplication()
{
}
protected:
void createScene(void)
{
}
};

目前我们什么也没有做,只是完完全全继承了ExampleApplication里所有的东西,如果你编译通过后,在运行的时候可以用WASD键移动,鼠标来转镜头,ESC键来退出程序。

接着要做一些具体的工作了。在场景中添加实体,以及灯光等。

setAmbientLight( ColourValue( 1, 1, 1 ) );//设置环境光(以后会详细说)
Entity *ent1 = mSceneMgr->createEntity( "Robot", "robot.mesh" );
//创建实体
SceneNode *node1 = mSceneMgr->getRootSceneNode()->createChildSceneNode( "RobotNode" );
//设置场景节点
node1->attachObject( ent1 );

 

设置环境光的时候直接设置了白色(红绿蓝都是1),createEntity有两个参数,第一个参数是给创建实体的一个唯一标识,第二个参数是具体使用的实体模型。这样就在屏幕上显示了一个机器人。

查看更多...

Tags: 程序 一起学 教程 图形引擎 图形学 OGRE

分类:Tech | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 3133