javame3d游戏开发框架

javame3d游戏开发框架

ID:34723721

大小:121.18 KB

页数:4页

时间:2019-03-10

javame3d游戏开发框架_第1页
javame3d游戏开发框架_第2页
javame3d游戏开发框架_第3页
javame3d游戏开发框架_第4页
资源描述:

《javame3d游戏开发框架》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、JavaME3D游戏开发框架(一)发表在2010.12.2209:54GMT+8·o评估该帖作者:杨丰盛    随着各种手持设备的性能提升和对3D技术的支持,越来越多的3D游戏出现在了各种手持设备上,3D游戏不仅能渲染出非常漂亮的图形,最重要的是能够给玩家带来更真实的体验,那么本文将分析如何通过JavaME环境来构建一个3D游戏开发框架。JavaME所支持的3D开发包主要有:jsr184和jsr239,其中jsr184是Mobile3DGraphicsAPI简称M3G,M3G的直接访问模式是建立在OpenGL的基础上的,作为它的一个子集和精简部分,保留了很多有效的功能。JSR239则定义

2、了一个几乎与OpenGLES的C接口相同的JavaAPI,使现有OpenGL内容的移植更为容易,OpenGLES是专为内嵌和移动设备设计的一个2D/3D轻量图形库,它是基于OpenGLAPI设计的。OpenGLES1.0版基于OpenGL1.3,而OpenGLES1.1则是基于OpenGL1.5的。现在主要由KhronosGroup来负责管理OpenGLES的开发维护,它几乎已经成为移动设备3D技术的一个事实标准。因此本文将采用该规范,使用JSR239开发包来构建3D游戏。在使用OpenglES开发游戏之前,我们首先需要分析几个名词、概念及其功能。EGL是OpenGLES和底层Nativ

3、e平台视窗系统之间的接口。是为OpenGLES提供平台独立性而设计。OpenGLES为附加功能和可能的平台特性开发提供了扩展机制,但仍然需要一个可以让OpenGLES和本地视窗系统交互且平台无关的层。OpenGLES本质上是一个图形渲染管线的状态机,而EGL则是用于监控这些状态以及维护Framebuffer和其他渲染Surface的外部层。图1-1是一个典型的EGL系统布局图。图1-1典型的EGL系统布局图OpenGLES本质上是一个图形渲染管线的状态机,而EGL则是用于监控这些状态以及维护帧缓冲和其他渲染面的外部层。EGL视窗设计是基于人们熟悉的用于MicrosoftWindows(W

4、GL)和UNIX(GLX)上的OpenGL的Native接口,与后者比较接近。OpenGLES图形管线的状态被存储于EGL管理的一个上下文中。帧缓冲和其他绘制渲染面通过EGLAPI创建、管理和销毁。EGL同时也控制和提供了对设备显示和可能的设备渲染配置的访问。举报引用messi帖子:14加入日期:2010.09.2014:05GMT+8地点:中国JavaME3D游戏开发框架(一)发表在2010.12.2209:55GMT+8·o评估该帖EGL包括一下几个类,分别是EGLDisplay:显示句柄EGLConfig:配置类;EGLContext:渲染上下文;的类和EGLSurface:可渲染

5、的视图类。OpenGLES需要一个渲染上下文和渲染面。渲染上下文中存储OpenGLES的状态信息,渲染面用于图元的绘制。编写OpenGLES之前需要EGL的操作有:Ø 查询设备可以支持的显示句柄,并初始化。Ø 创建渲染面,绘制OpenGLES图形。Ø 创建渲染上下文。EGL需要创建OpenGLES渲染上下文用于关联到某个渲染面。这里我们将初始化EGL的操作整理到一个init函数中,如下代码所示。publicvoidinit(){   //获得egl实例   this.egl=(EGL10)EGLContext.getEGL();   //创建EGLDisplay   this.eglDi

6、splay=egl.eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY);      int[]major_minor=newint[2];   //初始化EGLDispla,获得版本号   egl.eglInitialize(eglDisplay,major_minor);    int[]num_config=newint[1];   //得到所有的cofig,数量   egl.eglGetConfigs(eglDisplay,null,0,num_config);   System.out.println("num_config[0]="+num_con

7、fig[0]);   //设置配置列表   intredSize=getProperty("jsr239.redSize",8);   intgreenSize=getProperty("jsr239.greenSize",8);   intblueSize=getProperty("jsr239.blueSize",8);   intalphaSize=getProperty("jsr239.alphaSize",0);   in

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。