美文网首页
1.GLSurfaceView初体验

1.GLSurfaceView初体验

作者: hlp22 | 来源:发表于2017-11-02 20:59 被阅读0次

    在android中要使用openGL ES非常便利, 利用GLSurfaceView类即可, 只需要调用setRenderer来设置GLSurfaceView.Renderer。如下所示:

    public class MainActivity extends AppCompatActivity implements GLSurfaceView.Renderer{
        GLSurfaceView surfaceView;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            surfaceView = new GLSurfaceView(this);
            surfaceView.setRenderer(this);
            setContentView(surfaceView);
        }
    
        @Override
        public void onSurfaceCreated(GL10 gl, EGLConfig config) {
            gl.glClearColor(1.0f, 0.0f, 0.0f, 1.0f);
        }
    
        @Override
        public void onSurfaceChanged(GL10 gl, int width, int height) {
            gl.glViewport(0, 0, width, height);
        }
    
        @Override
        public void onDrawFrame(GL10 gl) {
            gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
        }
    }
    
    

    GLSurfaceView.Renderer 定义了一个统一图形绘制的接口,有如下三个接口函数:

      public interface Renderer {
            void onSurfaceCreated(GL10 gl, EGLConfig config);
            void onSurfaceChanged(GL10 gl, int width, int height);
            void onDrawFrame(GL10 gl);
        }
    

    其中:

    • onSurfaceCreated:用来设置一些绘制时不常变化的参数,比如:背景色,是否打开 z-buffer 等;
    • onDrawFrame: 定义实际的绘图操作;
    • onSurfaceChanged:如果设备支持屏幕横向和纵向切换,这个方法将发生在横向与纵向互换时重新设置绘制的纵横比率。

    在上面的例子中,用到了

        void glClearColor(
            float red,
            float green,
            float blue,
            float alpha
        );
    

    void glClear(
            int mask
        );
    

    两个函数。
    其中glClearColor指定刷新颜色缓冲区时所用的颜色, 而glClear(GL10.GL_COLOR_BUFFER_BIT)将缓存清除为预先的设置值。运行上诉代码,可看到红色的背景界面。

    相关文章

      网友评论

          本文标题:1.GLSurfaceView初体验

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