美文网首页
构建OpenGL ES环境

构建OpenGL ES环境

作者: 一个不凡的人 | 来源:发表于2018-11-17 09:29 被阅读0次

    为了在Android Application中使用OpenGL ES绘制图形。您必须为它门创建一个视图容器。其中直接的方法就是实现GLSurfaceViewGLSurfaceView.RendererGLSurfaceView是使用OpenGL绘制图形的视图容器,GLSurfaceView.Renderer控制在该视图中绘制的内容。有关这些类的更多信息,请参阅OpenGL ES开发人员指南。

    GLSurfaceView只是应用程序包含OpenGL ES图形的一种方法。对于全屏或接近全屏图形视图,这是一个合理的选择。如果您想在Layout的某一部分包含OpenGL ES图形,因该看下TextureView。您也可以使用SurfaceView构建OpenGL ES视图,这需要编写相当多的额外代码。

    要使用OpenGL ES,需在AndroidManifest.xml中声明。

    使用OpenGL ES 2.0 API 这样声明:

    <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" />
    

    为OpenGL ES创建Activity:

    public class OpenGLES20Activity extends Activity {
    
        private GLSurfaceView mGLView;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            // Create a GLSurfaceView instance and set it
            // as the ContentView for this Activity.
            mGLView = new MyGLSurfaceView(this);
            setContentView(mGLView);
        }
    }
    

    注意:OpenGL ES 2.0需要Android 2.2(API级别8)或更高版本,因此请确保您的Android项目以该API或更高版本为目标。

    创建GLSurfaceView object

    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);
        }
    }
    

    你还可以设置渲染器模式:

    /*仅在绘图数据发生更改时才渲染视图*/
    setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
    

    创建Renderer:控制关联GLSufaceView的绘制内容

    public class MyGLRenderer implements GLSurfaceView.Renderer {
    
        /**
        *设置视图的OpenGL ES环境时调用一次
        */
        public void onSurfaceCreated(GL10 unused, EGLConfig config) {
            // Set the background frame color
            GLES20.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
        }
    
        /**
        *每次重绘都会调用
        */
        public void onDrawFrame(GL10 unused) {
            // Redraw background color
            GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
        }
    
        /**
        *视图的几何图形发生更改(例如,设备的屏幕方向更改时),则调用此方法。
        */
        public void onSurfaceChanged(GL10 unused, int width, int height) {
            GLES20.glViewport(0, 0, width, height);
        }
    }
    

    上面的代码示例创建了一个简单的Android应用程序,它使用OpenGL显示黑屏。 虽然这段代码没有做任何有趣的事情,但通过创建这些类,您已经奠定了开始使用OpenGL绘制图形元素所需的基础。

    相关文章

      网友评论

          本文标题:构建OpenGL ES环境

          本文链接:https://www.haomeiwen.com/subject/rjkvfqtx.html