【Android】OpenGL_ES基本用法

OpenGL ES 基本用法

搭建最基本的框架

  • 新建一个Android项目
  • 新建GLSurfaceView实例
  • 创建渲染器Renderer实例
  • 给GLSurfaceVIew设置Renderer实例
  • 显示GLSurfaceView
//所涉及到的方法

//设置清屏颜色
gl.glClearColor(float red, float green,float blue,float alpha);
//使用设置的清屏颜色清屏
gl.glCleat();

//设置可视区域窗口大小
gl.glViewport(int x,int y,int width,int height);

相关坐标系的辨析

Android中的坐标系

【Android】OpenGL_ES基本用法_第1张图片

OpenGL 中的Viewport坐标系

【Android】OpenGL_ES基本用法_第2张图片

具体实现

1.创建类实现GLSurfaceView.Renderer接口

public class MyRenderer implements GLSurfaceView.Renderer {
     
    @Override
    public void onSurfaceCreated(GL10 gl, EGLConfig config) {
     
        gl.glClearColor(0f,1f,0f,0f);

    }

    @Override
    public void onSurfaceChanged(GL10 gl, int width, int height) {
     

    }

    @Override
    public void onDrawFrame(GL10 gl) {
     
        //使用上面设置的颜色清屏
        gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

    }
}

2.在activity中创建GLSurfaceVIew

public class MainActivity extends AppCompatActivity {
     
    GLSurfaceView glSurfaceView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
     
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.activity_main);
        glSurfaceView = new GLSurfaceView(this);
        MyRenderer renderer = new MyRenderer();
        glSurfaceView.setRenderer(renderer);
        
        //设置渲染模式
        /**
        1.(默认模式)GLSurfaceView.RENDERMODE_CONTINUOUSLY 不间断的渲染
        2,GLSurfaceView.RENDERMODE_WHEN_DIRTY  当屏幕变脏时绘制,也就是当调用GlSurfaceView的requestRender()方法后才会执行一次(第一次启动时自动绘制一次)
        **/
        glSurfaceView.setRenderMode(GLSurfaceView.
                                    RENDERMODE_WHEN_DIRTY);

        setContentView(glSurfaceView);
    }
}

OpenGL ES —绘制点

世界坐标系:

​ 右手法则,大拇指指向x轴正方向,食指指向y轴正方向,中指指向z轴正方向

【Android】OpenGL_ES基本用法_第3张图片

绘制过程

【Android】OpenGL_ES基本用法_第4张图片
【Android】OpenGL_ES基本用法_第5张图片

【Android】OpenGL_ES基本用法_第6张图片

【Android】OpenGL_ES基本用法_第7张图片

【Android】OpenGL_ES基本用法_第8张图片

【Android】OpenGL_ES基本用法_第9张图片

【Android】OpenGL_ES基本用法_第10张图片
【Android】OpenGL_ES基本用法_第11张图片

【Android】OpenGL_ES基本用法_第12张图片

你可能感兴趣的:(Android开发,android)