1.介绍
之前的总结的文章是写OpenGLES1.0的使用,可能有些不对的地方。接下来讲的是OpenGLES2.0.
Android 支持OpenGL ES API版本的详细状态:
- OpenGL ES 1.0 和 1.1 能够被Android 1.0及以上版本支持
- OpenGL ES 2.0 能够被Android 2.2及更高版本支持
- OpenGL ES 3.0 能够被Android 4.3及更高版本支持
- OpenGL ES 3.1 能够被Android 5.0及以上版本支持
为了让你的应用程序能够使用OpenGL ES 2.0的API,你必须添加以下声明到manifest:且SDK版本要符合
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
如果你的应用程序需要使用纹理压缩,你还需要声明你的应用程序需要支持哪种压缩格式,以便他们安装在兼容的设备上。
<supports-gl-texture android:name="GL_OES_compressed_ETC1_RGB8_texture" />
<supports-gl-texture android:name="GL_OES_compressed_paletted_texture" />
2.简单例子使用
public class MainActivity extends AppCompatActivity {
private GLSurfaceView glSurfaceView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
glSurfaceView = new MyGLSurfaceView(this);
setContentView(glSurfaceView);
}
}
public class MyGLSurfaceView extends GLSurfaceView{
private final MyGLRenderer mRenderer;
public MyGLSurfaceView(Context context){
super(context);
// Create an OpenGL ES 2.0 context
setEGLContextClientVersion(2);
mRenderer = new MyGLRenderer();
setRenderer(mRenderer);
}
}
public class MyGLRenderer implements GLSurfaceView.Renderer {
@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
GLES20.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
}
@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
GLES20.glViewport(0, 0, width, height);
}
@Override
public void onDrawFrame(GL10 gl) {
GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
}
}
有了之前的使用对于这个例子应该很熟悉。简单使用就是如此。