Android中使用opengl es2.0基础(1)

来源:互联网 发布:淘宝的ip地址怎么看 编辑:程序博客网 时间:2024/06/05 08:29

Android中使用opengl es2.0基础(1)


OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL三维图形 API 的子集,针对手机、PDA和游戏主机等嵌入式设备而设计。本文章主要是针对Android中使用Opengl进行图形的绘制简单总结整理,后续会不断更新相关的内容......


1、我们要使用Opengl ES 2.0必须先在Manifest下添加以下声明:

<uses-feature android:glEsVersion="0x00020000" android:required="true"/>


2、创建一个图形绘制类,并且此类实现GLSurfaceVIew.Renderer接口,并复写onSurfaceCreate、onSurfaceChanged、onDrawFrame 三个方法:

public class OpenglRender implements GLSurfaceView.Renderer{    /**     * 仅调用一次,用于设置view的OpenGLES环境     */    @Override    public void onSurfaceCreated(GL10 gl, EGLConfig config)    {        //设置清屏背景色RGBA        GLES20.glClearColor(1.0f, 0.0f, 0.0f, 1.0f);    }    /**     * 如果view的几何形状发生变化就调用,例如当竖屏变为横屏时     */    @Override    public void onSurfaceChanged(GL10 gl, int width, int height)    {        //设置视窗大小及位置        GLES20.glViewport(0, 0, width, height);    }    /**     * 每次View被重绘时被调用     */    @Override    public void onDrawFrame(GL10 gl)    {        //清除深度缓冲与颜色缓冲        GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT|GLES20.GL_DEPTH_BUFFER_BIT);    }}

3、创建一个GLSurfaceView的子类,用来承载Renderer中绘制的内容:

public class OpenglSurfaceView extends GLSurfaceView {    public OpenglSurfaceView(Context context) {        super(context);        // 使用OpenGLES 2.0        setEGLContextClientVersion(2);        // 设置Renderer到GLSurfaceView        setRenderer(new OpenglRender());        // render模式为只在绘制数据发生改变时才绘制view,此设置会阻止绘制GLSurfaceView的帧,直到你调用了requestRender().        setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);        //以下模式会不断绘制,我的手机上大概5--6 毫秒绘制一次        //setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY);    }}

4、创建一个Activity窗口用于展示绘制的内容:

public class OpenglActivity extends Activity {    private GLSurfaceView glSurfaceView;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        //设置GLSurfaceView为contentview        glSurfaceView = new OpenglSurfaceView(this);        setContentView(glSurfaceView);    }    @Override    protected void onPause() {        super.onPause();        glSurfaceView.onPause();    }    @Override    protected void onResume() {        super.onResume();        glSurfaceView.onResume();    }}

完成上述的步骤后,编译安装app你可以看到一个红色的背景界面,这就是最简单的Opengl es的集成。红色的背景是我们再Renderer中使用了红色为清屏的颜色。
//设置清屏背景色RGBAGLES20.glClearColor(1.0f, 0.0f, 0.0f, 1.0f);
下一节介绍简单的图形绘制


原创粉丝点击