如何学习android opengl

发布网友 发布时间:2022-04-22 00:02

我来回答

1个回答

热心网友 时间:2023-12-04 18:09

它为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()方法。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com