欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

搭建OpenGLES环境

时间:2023-06-22

一、搭建OpenGL ES环境

1、在AndroidManifest.xml中申明OpenGL ES版本

<?xml version="1.0" encoding="utf-8"?> ...

2、创建一个GLSurfaceView和GLSurfaceView.Renderer

GLSurfaceView继承自SurfaceView,在它的基础上实现了一个GLThread,用来管理OpenGL ES的绘制,将绘制的结果显示在SurfaceView所提供的Surface上。

public class Cus1GLSurfaceView extends GLSurfaceView { public Cus1GLSurfaceView(Context context) { super(context); init(); } public Cus1GLSurfaceView(Context context, AttributeSet attrs) { super(context, attrs); init(); } private void init() { //设置版本 setEGLContextClientVersion(2); //设置渲染器 setRenderer(new Cus1Renderer()); //设置渲染模式 setRenderMode(RENDERMODE_WHEN_DIRTY); }}

渲染模式有两种:

RENDERMODE_WHEN_DIRTY:这种渲染模式只会在surface被创建或者我们手动调用了requestRender的时候才会去渲染,按需渲染,性能更高。RENDERMODE_CONTINUOUSLY:默认的渲染方式,每隔一定时间会去刷新当前界面

Renderer是一个渲染器,用来真正的处理绘制逻辑

public class Cus1Renderer implements GLSurfaceView.Renderer { //当surface创建时调用,可以做一些OpenGLES上下文的初始化 @Override public void onSurfaceCreated(GL10 gl, EGLConfig config) { GLES20.glClearColor(1,0,0,0); } //surface发生变化的时候调用 @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); }}

GLES20.glClearColor( float red, float green, float blue, float alpha):设置清屏时候的颜色

GLES20.glViewport( int x, int y, int width, int height):设置绘制显示的窗口大小

GLES20.glClear:清屏

最后显示在页面上:显示效果为红色

public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new Cus1GLSurfaceView(this)); }}

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。