Android opengl es 2.0怎么学习
1个回答
展开全部
ndroid系统下OpenGL ES 2.0学习入门
完成工具的安装以后,继续在Eclipse中创建一个新的Android项目。项目名称虽然不重要,但是该节将与主要活动有关,因此应认真学习掌握。
首先看一段代码:
/** 新建一个GLSurfaceView对象 */
private GLSurfaceView mGLSurfaceView;
GLSurfaceView是一个特殊的视图,它为我们管理OpenGL表面并将其绘制到Android视图系统中。它还添加许多可以简化OpenGL使用的功能,包括但并不局限于:
它为OpenGL提供一个专用的渲染线程,使主线程得以继续。
它支持连续或按需渲染,维护屏幕设置以及OpenGL和底层窗口系统之间的接口。代码如下:
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
mGLSurfaceView = new GLSurfaceView(this);
// 检测系统是否支持 OpenGL ES 2.0
final ActivityManager activityManager = (ActivityManager) getSystemService(Context. ACTIVITY_SERVICE);
final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
final boolean supportsEs2 = configurationInfo.reqGlEsVersion >= 0x20000;
if (supportsEs2)
{
mGLSurfaceView.setEGLContextClientVersion(2);
mGLSurfaceView.setRenderer(new LessonOneRenderer());
}
else
{
return;
}
setContentView(mGLSurfaceView);
}
在onCreate()方法里面主要是创建OpenGL ES 2.0上下文以及做一些初始化工作。在onCreate()中,调用超类之后的第一件事情就是创建GLSurfaceView。然后确定系统是否支持 OpenGL ES 2.0。因此,我们需要一个可以与全局系统状态相交互的ActivityManager实例,以及使用这个实例来得到设备配置信息,该信息将通知我们设备 是否支持OpenGL ES 2.0。
一旦确定设备是否支持OpenGL ES 2.0后,就会通知表面视图需要一个与OpenGL ES 2.0相兼容的视图,然后传递一个自定义渲染。这个渲染将在任何需要调整表面或者绘制一个新的帧的时候被系统调用。我们还通过传递一个不同的渲染来支持 OpenGL Es 1.x,尽管可能由于APIs的不同,导致我们需要编写不同的代码,但在这一节中,我们将只关注OpenGL ES 2.0。
最后,我们为GLSurfaceView设置内容视图,它通知Android活动内容应该填补OpenGL表面,代码如下:
@Override
protected void onResume()
{
super.onResume();
mGLSurfaceView.onResume();
}
@Override
protected void onPause()
{
super.onPause();
mGLSurfaceView.onPause();
}
GLSurfaceView要求我们在任何父Activity的onResume()和onPause()方法被调用的时候调用onResume()和onPause()方法。
完成工具的安装以后,继续在Eclipse中创建一个新的Android项目。项目名称虽然不重要,但是该节将与主要活动有关,因此应认真学习掌握。
首先看一段代码:
/** 新建一个GLSurfaceView对象 */
private GLSurfaceView mGLSurfaceView;
GLSurfaceView是一个特殊的视图,它为我们管理OpenGL表面并将其绘制到Android视图系统中。它还添加许多可以简化OpenGL使用的功能,包括但并不局限于:
它为OpenGL提供一个专用的渲染线程,使主线程得以继续。
它支持连续或按需渲染,维护屏幕设置以及OpenGL和底层窗口系统之间的接口。代码如下:
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
mGLSurfaceView = new GLSurfaceView(this);
// 检测系统是否支持 OpenGL ES 2.0
final ActivityManager activityManager = (ActivityManager) getSystemService(Context. ACTIVITY_SERVICE);
final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
final boolean supportsEs2 = configurationInfo.reqGlEsVersion >= 0x20000;
if (supportsEs2)
{
mGLSurfaceView.setEGLContextClientVersion(2);
mGLSurfaceView.setRenderer(new LessonOneRenderer());
}
else
{
return;
}
setContentView(mGLSurfaceView);
}
在onCreate()方法里面主要是创建OpenGL ES 2.0上下文以及做一些初始化工作。在onCreate()中,调用超类之后的第一件事情就是创建GLSurfaceView。然后确定系统是否支持 OpenGL ES 2.0。因此,我们需要一个可以与全局系统状态相交互的ActivityManager实例,以及使用这个实例来得到设备配置信息,该信息将通知我们设备 是否支持OpenGL ES 2.0。
一旦确定设备是否支持OpenGL ES 2.0后,就会通知表面视图需要一个与OpenGL ES 2.0相兼容的视图,然后传递一个自定义渲染。这个渲染将在任何需要调整表面或者绘制一个新的帧的时候被系统调用。我们还通过传递一个不同的渲染来支持 OpenGL Es 1.x,尽管可能由于APIs的不同,导致我们需要编写不同的代码,但在这一节中,我们将只关注OpenGL ES 2.0。
最后,我们为GLSurfaceView设置内容视图,它通知Android活动内容应该填补OpenGL表面,代码如下:
@Override
protected void onResume()
{
super.onResume();
mGLSurfaceView.onResume();
}
@Override
protected void onPause()
{
super.onPause();
mGLSurfaceView.onPause();
}
GLSurfaceView要求我们在任何父Activity的onResume()和onPause()方法被调用的时候调用onResume()和onPause()方法。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询