EGLHelper
来源:互联网 发布:flash player修复软件 编辑:程序博客网 时间:2024/04/20 03:03
import javax.microedition.khronos.egl.EGL10;import javax.microedition.khronos.egl.EGL11;import javax.microedition.khronos.egl.EGLConfig;import javax.microedition.khronos.egl.EGLContext;import javax.microedition.khronos.egl.EGLDisplay;import javax.microedition.khronos.egl.EGLSurface;import javax.microedition.khronos.opengles.GL;import android.view.SurfaceHolder;/** * Copyright (C) 2008 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. * * EGLHelper class extracted from GLView */public class EGLHelper{ publicEGLHelper() { } /** * Initialize EGL for a given configuration spec. * * @param configSpec */ publicvoid start(int[] configSpec) { /* * Get an EGL instance */ mEgl =(EGL10)EGLContext.getEGL(); /* * Get to the default display. */ mEglDisplay = mEgl.eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY); /* * We can now initialize EGL for that display */ int[] version= new int[2]; mEgl.eglInitialize(mEglDisplay, version); EGLConfig[] configs= new EGLConfig[1]; int[] num_config= new int[1]; mEgl.eglChooseConfig(mEglDisplay, configSpec, configs,1, num_config); mEglConfig = configs[0]; /* * Create an OpenGL ES context. This must be done only once, an OpenGL * context is a somewhat heavy object. */ mEglContext = mEgl.eglCreateContext(mEglDisplay, mEglConfig, EGL10.EGL_NO_CONTEXT,null); mEglSurface =null; } /* * Create and return an OpenGL surface */ public GL createSurface(SurfaceHolder holder) { /* * The window size has changed, so we need to create a new surface. */ if(mEglSurface!=null) { /* * Unbind and destroy the old EGL surface, if there is one. */ mEgl.eglMakeCurrent(mEglDisplay, EGL10.EGL_NO_SURFACE, EGL10.EGL_NO_SURFACE, EGL10.EGL_NO_CONTEXT); mEgl.eglDestroySurface(mEglDisplay, mEglSurface); } /* * Create an EGL surface we can render into. */ mEglSurface = mEgl.eglCreateWindowSurface(mEglDisplay, mEglConfig, holder,null); /* * Before we can issue GL commands, we need to make sure the context is * current and bound to a surface. */ mEgl.eglMakeCurrent(mEglDisplay, mEglSurface, mEglSurface, mEglContext); if(mEgl.eglGetError()==EGL11.EGL_CONTEXT_LOST) AngleMainEngine.mDirty=true; GL gl = mEglContext.getGL(); return gl; } /** * Display the current render surface. * * @return false if the context has been lost. */ publicboolean swap() { mEgl.eglSwapBuffers(mEglDisplay, mEglSurface); /* * Always check for EGL_CONTEXT_LOST, which means the context and all * associated data were lost (For instance because the device went to * sleep). We need to sleep until we get a new surface. */ return mEgl.eglGetError()!= EGL11.EGL_CONTEXT_LOST; } publicvoid finish() { boolean success=true; if(mEglSurface!=null) { success&=mEgl.eglMakeCurrent(mEglDisplay, EGL10.EGL_NO_SURFACE, EGL10.EGL_NO_SURFACE, EGL10.EGL_NO_CONTEXT); success&=mEgl.eglDestroySurface(mEglDisplay, mEglSurface); mEglSurface =null; } if(mEglContext!=null) { success&=mEgl.eglDestroyContext(mEglDisplay, mEglContext); mEglContext =null; } if(mEglDisplay!=null) { success&=mEgl.eglTerminate(mEglDisplay); mEglDisplay =null; } AngleMainEngine.mDirty=!success; } EGL10 mEgl; EGLDisplay mEglDisplay; EGLSurface mEglSurface; EGLConfig mEglConfig; EGLContext mEglContext;}
联系方式:weinyzhou86@gmail.com
QQ:514540005
版权所有,禁止转载.
发布自:http://blog.csdn.net/weinyzhou/article/details/8242910
- EGLHelper
- 终止线程 Response.End 在Asp.net 里面的正确使用
- Android.mk简介 .
- Java--collection--List,Set,Map
- 【phpcms-v9】phpcms-v9数据源调用的控制器文件分析phpcms/modules/dbsource/call.php
- 历史上留下浓重一笔的黑客们
- EGLHelper
- This FTP server is anonymous only 解决方案
- Java基本类型与byte数组之间相互转换
- Android Drawable Resource学习(六)、LevelListDrawable
- Linux-2.6.32.2内核在mini2440上的移植(一)---构建自主开发环境
- 样片申请公司
- 检测单链表是否是回文
- Android 网络访问框架 NiceDay 发布
- C#使用LitJson解析JSON