MT4j 开始

怎样开始?

如果你已经成功的安装了MT4j,当你开始开发你自己的应用程序的时候,最好是去看看MT4j下的实例(examples)并运行他们,这样你就会知道在MT4j下的各个部件是怎么工作的。这里的实例有从最简单的“Hello world”程序到复杂的应用程序。 另外你还可以去查看教程章节去了解更多的细节。 你也可以去在freenode上的#mt4j的IRC的通道上寻求帮助。 如需提示和技巧,并避免常见的问题或错误,浏览本常见问题解答部分。 您也可以去NUIGroup论坛去讨论MT4j和常见的问题。

怎样让我自己的应用程序全屏?

像修改其他的设置一样,你可以打开MT4j的文件根目录下“Setting.txt”,在这个文档里去修改相应的值。我们现在的这个问题就可以将“FullScreen=false”修改为“FullScreen=true”。如果全屏模式还是有问题的话,或者当前没有工作,你可以试着将“FullScreenExclusive”改为“false”.

怎么支持多个鼠标输入?

首先,让你的系统连接多个鼠标输入(一个有结合外部鼠标触摸板笔记本电脑还可以用于两个单独的输入),然后再启动你的MT4j应用程序之前,修改“Setting.txt”中的将“MultiMiceEnabled”设置为“True”.此功能只支持windows吗?也包括Linux平台。 注:有时在MT4j中光标出现之前你应该按下鼠标。

 MT4j能在64位操作系统运行吗?

官方的讲,MT4j不支持64位的操作系统并由此产生了不同的问题。然而,你可以在MT4j的根目录下找到它的64位的版本的OPenGL包替换本地的,目录路径:./mt4jLibs/jogl/ directory。在windows系统下,你需要的本地的文件是 jogl-natives-windows-amd64.jar和gluegen-rt-natives-windows-amd64.jar;在linux系统下,jogl-natives-linux-amd64.jar和gluegen-rt-natives-linux-amd64.jar.这些JAR文件可以通过多数存档程序例如7-zip。如果问题还存在,你应该尝试去更换安装32位版的Java运行环境。

MT4j支持windows 7(Multi-)Touch API ?

支持,从发布版0.9版后就支持Windows 7 Touch API 。当然,前提是在32位的Java虚拟机下支持,如果你运行的是64位的Windows 7 ,你可以尝试安装的是32位的虚拟机运行看是否可以运行。如果所有的失败了,你应该使用一些额外的程序转换为TUIO协议下的本地信息。NUI 论坛里有相关 “WM_TOUCH 到TUIO 转换”的讨论和相关的下载。该转换器的透明窗口,必须对MT4j窗口的顶部放置使它工作。

 怎样解决空线程的问题

在OpenGL,是不能访问相关的绘图的方法的。通常,这不是一个问题,当您在您的MT4j应用程序使用用户界面组件交互的线程,它可以成为一个问题。当线程访问用户界面的组件,你的应用程序在OpenGL得绘图(迟早会发生)的不可预知的结果。在MT4j下,制定了以防止这种被称为PreDrawAction的机制。一个线程内处理代码并可以被放置在实现了IPreDrawAcrion接口,可以使用registerPreDrawAction(IPreDrawAcrion行动)的方法添加场景的类中。您PreDrawAction方法将下一次现场绘制之前被调用。另一种方法,不依赖于场景而使用MTApplication类的invokeLater(Runnable runnable). 这个runnable 将会在下一个渲染帧之前被执行。

 我碰到了“out of memory” 错误在运行MT4j应用程序的时候,现在我该怎么做呢?

用了许多的组件、字体、图片和解析几何是会消耗很多的内存。通常情况,Java运行环境至多允许你使用64M的内存。如果超过了这个界限,就会抛出内存溢出异常。这可以通过给这个应用程序更多的使用权来获取更多的内存。在Java命令行里选择“-Xmx”可以做这些。添加选项“-Xmx256m”的这个命令行后,就会允许应用程序使用256M的内存了。 如果你使用的Eclipse IDE ,则操作为: RUN->"Run configurations/Open Run dialog" -> select your application on the left ->"Arguments" tab ->"VMArguments" -> 写“-Xmx256m”到VmArguments 输入框 -> "Apply"

如何避免内存泄漏?

与大部分“通常”Java不同?应用程序,MT4j是基于OpenGL来对图形渲染对于Java意味着什么呢?垃圾回收并不能自动的回收不用的事物的内存并且一些节点(基于原生的OpenGL节点)会需要手工的释放和申请资源。E.g 纹理都有很到的占用的内存空间(即使更大OpenGLMIP映射未被启用)。手动的移除组件和释放他们不再使用的内存都要调用MT4j 不再使用的组件方法destory()。如果你创建了你自己的组件和纹理,显示列表等等,你应该重载destoryComponent()方法(另一个叫做destory()的方法)并且手动的释放你的组件使用的所有的资源。如果destory()方法被某个组件调用,则它下面的子组件都将自动被销毁。

 我绘制我的组件是不是要遵循一定的顺序?

是的,你最好的做法是:你应该在你的应用程序中为每一个“层”创建一个组(MTComponent),为2D和3D组件创建不同层(例如: Windows 、图片等等 ---组件应该在同一个平面上)。这将很容易的整理你的场景和按一定的顺序绘制你的组件。

添加组的顺序应该是:

1、添加一个2D的组件组。

2、添加一个3D的组件组。

(3。添加一个最前显示小组(即GUI)的在所有的场景前面 - 可选的) 一个特别的例子存在着-(半)透明组件。如何的顺序去渲染它们呢,它们渲染之后应该能够看到它们后面的组件在透明的部分上。所以这些组件应该添加在透明组件之后。如果我们有透明的组件的定位在3D场景,我们的渲染顺序应该是将通过透明组件相对摄像头的距离排序好的组件队列从后到前的顺序进行渲染(有时候这也被当成帧)。更多的信息请查阅OpenGL Transparency FAQ

怎样获得最好的性能图像性能:

使用OpenGL 进行渲染 全屏运行模式在某些系统中运行更快(查看 Setting.txt)。 使用不可改变的画多边形启用displayList(usage: myShape.generateAndUseDisplayLists()) or Vertex Buffer Objects (VBO) for shapes that are changed rarely (usage: myShape.setUseVBOs(true) 注:所有这一切只适用于使用了OpenGL渲染和形状有更多的不仅仅是几个顶点 在你的画布上启用域剔除(canvas.setFrustumCulling(true)) 选择/分拣性能: 如果我们知道某些形状仅仅只有2D,在Z轴上z=0的面板上,我们应该使用 2D boundingshapes (即 BoundsZPlaneRectangle 类)去加速分拣。 我们可以设置这些形状的分拣行为的值“BOUNDS_ONLY_CHECK”因此,只有形状的边界检查一命中而不是真正的形状是复杂的形状是可取的。(usage:myShape.setBoundsPickingBehaviour(AbstractShape.BOUNDS_ONLY_CHECK)") 目前 ,您可以不用MT4j,MT4j作为一个发展的开发库。MT4j架构太大分歧的一般处理素描图。为了发展MT4j应用,建议使用像Eclipse或NetBeans的Java IDE。

如何贡献?

一直欢迎大家为MT4j项目作出贡献。如果你创建MT4j 场景或者组件在你需要的项目中。请考虑贡献给社区,关于如何促进MT4j更多信息,你可以在这里找到。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值