OpenGL-ES(一)

学习opengl-es之初,因为公司需求“展示3D模型和一系列的定制操作”功能,关于模型这方面知识不会,一开始思考是不是直接用游戏引擎就完事儿了,答案是当然可以的,但是他么的么有接触过游戏引擎啊而其文档又少,马麦碧蓝瘦香菇。还是自己研究研究OpenGL-es吧。

判断支持OpenGl版本
我们用的是2.0版本,所以判断手机是否支持2.0版本

  private boolean supportsEs2() {
        ActivityManager activityManager =
                (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
        ConfigurationInfo configurationInfo = activityManager
                .getDeviceConfigurationInfo();

        final boolean supportsEs2 =
                configurationInfo.reqGlEsVersion >= 0x20000
                        || (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1
                        && (Build.FINGERPRINT.startsWith("generic")
                        || Build.FINGERPRINT.startsWith("unknown")
                        || Build.MODEL.contains("google_sdk")
                        || Build.MODEL.contains("Emulator")
                        || Build.MODEL.contains("Android SDK built for x86")));

        return supportsEs2;
    }



    /**
     * 为OpenGl2.0配置渲染表面
     */
    private void initData() {
        if (supportsEs2()) {
            MyRender myGlRender = new MyRender();
            //设置opengl版本
            surfaceView.setEGLContextClientVersion(2);
            surfaceView.setRenderer(myGlRender);
            //RenderMode 有两种,RENDERMODE_WHEN_DIRTY 和 RENDERMODE_CONTINUOUSLY,前者是懒惰渲染,需要手动调用
            // glSurfaceView.requestRender() 才会进行更新,而后者则是不停渲染。
            surfaceView.setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY);
        } else {
            Log.d("mmm", "不支持2.0版本");
        }
    }

想要使用OpenGL绘图其实步骤就两步实例化GLSurfaceView,编写渲染器GLSurfaceView.Render

  1. 实例化渲染器
public class MainActivity extends AppCompatActivity {


    GLSurfaceView surfaceView ;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        surfaceView  =new GLSurfaceView(this);
        setContentView(surfaceView);
      initData();
    }
}
  1. 实现渲染器

/**
 * 渲染器
 */
public class MyRender implements GLSurfaceView.Renderer {


    @Override
    public void onSurfaceCreated(GL10 gl10, EGLConfig eglConfig) {
        /*填充颜色*/
        GLES20.glClearColor(0.0f,55.0f,110,0.0f);
    }


    @Override
    public void onSurfaceChanged(GL10 gl10, int i, int i1) {
        /*窗口大小*/
        GLES20.glViewport(0,0,i,i1);
    }


    @Override
    public void onDrawFrame(GL10 gl10) {
        /*清空屏幕*/
        GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
    }
}

3、填充颜色的效果
在这里插入图片描述

结语:万事开头难,咱们头已经开好了,等待着我们的是形形色色的牛逼的图形了,努力吧少年

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

将哥哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值