Frame Listeners

In Ogre's C++, we would register a class to receive notification before and after a frame is rendered to the screen. Such a class is known as a Frame Listener. In Axiom this behavior has been translated to .NET events. This means that using frame listeners is silghtly different in Axiom compared to Ogre. In Ogre it is necessary to register a whole class as a frame listener (observer pattern) and implement several methods for all the events described below. In Axiom on the other hand we just use events and we register single methods only to the events we are interested in.

(废话一堆,意思就是Orge用一个类监听Frame渲染,Axiom中使用C#的event委托方式监听)

Frame Events

捞干的就这些:

FrameStarted 渲染之前调用的事件
FrameRenderingQueued 在 viewport 渲染之后, 在渲染窗口交换缓冲区之前
FrameEnded 在窗口渲染之后

监听事件:

Root.Instance.FrameStarted += new EventHandler<FrameEventArgs>(Instance_FrameStarted);

Input Handling

请允许我以如此偷懒方式记录键盘监听处理方法,对于我来说,这样就很足够,看不懂朋友不要介意.

void HandleKeyboardInput(FrameEventArgs e)
{
input.Capture(); if (input.IsKeyPressed(Input.KeyCodes.I))
{
translateVector.z -= 1;
}

}
void Instance_FrameStarted(object sender, FrameEventArgs e)
{
HandleKeyboardInput(e);
}
public override void CreateScene()
{
Root.Instance.FrameStarted += new EventHandler<FrameEventArgs>(Instance_FrameStarted);
}

Mouse

上面是键盘,下面是鼠标:

void HandleMouseInput(FrameEventArgs e)
{
input.RelativeMouseX * e.TimeSinceLastFrame
}
void Instance_FrameStarted(object sender, FrameEventArgs e)
{
HandleKeyboardInput(e);
HandleMouseInput(e);
}
简单易懂,无需多说.

Axiom3D学习日记 5.Frame Listeners, and Input Handling的更多相关文章

  1. Axiom3D学习日记 0.Axiom基础知识

    Axiom 3D Engine An open-source, cross-platform, managed 3D rendering engine for DirectX, XNA and Ope ...

  2. Axiom3D学习日记 4.地形,天空,雾

    首先需要引用Axiom.SceneManagers.Octree.dll. 地形: 载入地形配置,从一个文件中. scene.LoadWorldGeometry( "Terrain.xml& ...

  3. Axiom3D学习日记 3.Cameras, Lights, and Shadows

    Camera 相机: 相机基础知识不写了,需要注意的是:axiom目前不支持同时操作多个相机. 创建,设置位置基本操作. _camera = _scene.CreateCamera("Mai ...

  4. Axiom3D学习日记 2.介绍SceneManager,SceneNode,Entity

    SceneManager(场景管理类) 所有出现在屏幕里的东西都受SceneManager管理(最好是这样),当你放置对象在场景里,SceneManager就会跟踪他们的位置,当你为场景创建一个相机, ...

  5. Axiom3D学习日记 1.程序配置

    1.需要引用的库 Axiom Axiom.Framework Axiom.Platforms.Win32 Axiom.Plugins.FreeImageCodecs Axiom.Plugins.Par ...

  6. Python 学习日记(第三周)

    知识回顾 在上一周的学习里,我学习了一些学习Python的基础知识下面先简短的回顾一些: 1Python的版本和和安装 Python的版本主要有2.x和3.x两个版本这两个版本在语法等方面有一定的区别 ...

  7. Python学习日记 --day2

    Python学习日记 --day2 1.格式化输出:% s d  (%为占位符 s为字符串类型 d为数字类型) name = input('请输入姓名') age = int(input('请输入年龄 ...

  8. 前端学习日记之HTML、CSS 简单总结

    前端学习日记之HTML.CSS 简单总结 标签(空格分隔): html css 前端学习日记 html超文本标记语言 一. h标题标签 h1-h7 <!DOCTYPE html> < ...

  9. JavaWeb学习日记----表单提交方式

    1.表单提交方式 (1) 使用input控件中的submit提交 代码如下: <!DOCTYPE html> <html lang="en"> <he ...

随机推荐

  1. matlab的cell数组

    matlab的cell数组 元胞数组: 元胞数组是MATLAB的一种特殊数据类型,可以将元胞数组看做一种无所不包的通用矩阵,或者叫做广义矩阵.组成元胞数组的元素可以是任何一种数据类型的常数或者常量,每 ...

  2. List Of All Machine Learning Sorted By Citation

    List Of All Machine Learning Sorted By Citation With > 300 citations 2013-10-10 See Citation Anal ...

  3. struts2不能通过ONGL方式取出request中的Atrribute

    请看下面一个很简单的Action package com.ahgw.main.action; import org.springframework.stereotype.Controller; /** ...

  4. 《深度探索c++对象模型》chapter2 构造函数语义学

    关于c++,最常听到的一个抱怨是,编译器背着程序员做了太多事情,conversion运算符是最常被引用的一个例子:jerry schwarz,iostream函数库的建筑师,就曾经说过一个故事,他说他 ...

  5. Android WebView JavaScript交互

    今天介绍一下,Android中Webview与JavaScript的交互,首先是在布局文件里添加webview控件: <WebView android:id="@+id/webview ...

  6. linux配置Java(JDK)环境变量

    本帖最后由 zhai 于 2013-11-19 23:00 编辑 1.下载jdk Oracle官方下载地址:http://www.oracle.com/technetwork/java/javase/ ...

  7. HDU 5924 Mr. Frog’s Problem 【模拟】 (2016CCPC东北地区大学生程序设计竞赛)

    Mr. Frog's Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Other ...

  8. android 国内sdk下载地址及代理, android 环境搭建

    http://www.androiddevtools.cn/ http://www.cnblogs.com/bjzhanghao/archive/2012/11/14/android-platform ...

  9. Java Executor 框架学习总结

    大多数并发都是通过任务执行的方式来实现的.一般有两种方式执行任务:串行和并行. class SingleThreadWebServer { public static void main(String ...

  10. java 哈希码

    加入新的元素到数组中 /** * Append the given object to the given array, returning a new array * consisting of t ...