当前位置: 首页 > news >正文

Android OpenGLES2.0开发(二):环境搭建

世界没有悲剧和喜剧之分,如果你能从悲剧中走出来,那就是喜剧,如果你沉缅于喜剧之中,那它就是悲剧。——科马克·麦卡锡《路》 ​​​

OpenGL ES环境搭建

Android 应用中使用 OpenGL ES 绘制图形,必须创建一个显示容器。我们需要同时实现 GLSurfaceViewGLSurfaceView.Renderer接口。 GLSurfaceView 是使用 OpenGL 绘制图形的视图容器, GLSurfaceView.Renderer 用于控制该视图中绘制的内容。

1. 在清单中声明 OpenGL ES 的使用

在清单文件中声明使用OpenGL ES 2.0 API

<uses-feature android:glEsVersion="0x00020000" android:required="true" />

2. 创建GLSurfaceView

public class EnvGLSurfaceView extends GLSurfaceView {private Context mContext;private MyGLRenderer mRenderer;public EnvGLSurfaceView(Context context) {super(context);init(context);}public EnvGLSurfaceView(Context context, AttributeSet attrs) {super(context, attrs);init(context);}private void init(Context context) {mContext = context;// 创建OpenGL ES 2.0 contextsetEGLContextClientVersion(2);mRenderer = new MyGLRenderer();// 设置渲染器setRenderer(mRenderer);// 设置渲染模式:仅当图形数据发生更改时渲染视图setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);}
}

3. 创建渲染类Renderer

GLSurfaceView.Renderer 类(即渲染程序)的实现,他包含了三个接口

  • onSurfaceCreated:该方法中可以用来初始化数据等操作
  • onDrawFrame:该方法中编写我们要绘制的内容
  • onSurfaceChanged:当视图大小发生变化时,我们需要重新设置窗口大小
static class MyGLRenderer implements GLSurfaceView.Renderer {public void onSurfaceCreated(GL10 unused, EGLConfig config) {// 设置背景颜色为红色GLES20.glClearColor(1.0f, 0.0f, 0.0f, 1.0f);}public void onDrawFrame(GL10 unused) {// 设置红色清屏GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);}public void onSurfaceChanged(GL10 unused, int width, int height) {// 修改OpenGL ES窗口大小GLES20.glViewport(0, 0, width, height);}
}

4. 添加布局显示

将我们定义的MyGLSurfaceView加入到布局中

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".GLEnvActivity"><com.android.xz.opengldemo.view.EnvGLSurfaceViewandroid:layout_width="match_parent"android:layout_height="match_parent" /></androidx.constraintlayout.widget.ConstraintLayout>

启动Activity显示界面如下:
Alt
恭喜你^_^你已经成功搭建好了OpenGL ES的开发环境,是不是很简单呢?我们将在接下来的章节中会详细介绍onDrawFrame中绘制各种图形图像

最后

本章节我们搭建了OpenGL ES的开发环境,GLSurfaceView实际上已经帮我们把OpenGL核心环境搭建完成,我们只需要实现渲染接口即可。如果你想更加自由的使用OpenGL ES,可以使用SurfaceView或者TextureView,但是需要您自行搭建EGL环境,请参考该篇文章,自行完整的搭建OpenGL ES环境:Android OpenGLES开发:EGL环境搭建


http://www.mrgr.cn/news/34252.html

相关文章:

  • 数据结构——快速排序
  • 使用 Keras 训练一个循环神经网络(RNN)
  • Python →爬虫实践
  • 连接实验室服务器并创建虚拟环境,从本地上传文件到linux服务器,使用requirement.txt安装环境需要的依赖的方法及下载缓慢的解决方法(Linux)
  • Swagger enum 最佳实践:深度剖析与应用指南
  • 探索美赛:从准备到挑战的详细指南
  • 塑料清洗加工污水处理具体流程和效果说明
  • 为什么越来越多的网工运维转行网络安全?_idc运维转网络安全工程师_系统运维转行网安
  • 【行为树】01-第一棵树
  • 商标管理软件如何助力企业实现商标数字化管理?
  • 怎么录屏?免费录屏软件推荐,电脑屏幕与摄像头内容录制与分享指南
  • tomcat项目【jvm内存溢出】
  • 大数据新视界 --大数据大厂之 Vue.js 与大数据可视化:打造惊艳的数据界面
  • Spring AOP - 注解方式实现
  • Redis Sorted Set 跳表的实现原理和分析
  • 简单使用tesseract-ocr提取图片中的文字
  • angular封装好的组件的收到原生输入框的change事件
  • 可编辑PPT | 能源企业数字化框架、数字化运营及数字化平台建设方案
  • 石头剪刀布手势识别系统源码分享
  • 图论(dfs深搜系列)9.23
  • 甩锅笔记:好好的服务端应用突然起不来,经定位是无法访问外网了?测试又说没改网络配置,该如何定位?
  • 基于Ambari搭建hadoop生态圈+Centos7安装教程V2.0优化版(本篇博客写的较为详细,可能比较多,请耐心看)
  • 【BetterBench博士】2024年华为杯E题:高速公路应急车道紧急启用模型 Python代码实现
  • 最适配达梦、人大金仓的sql工具是什么?
  • HTTP代理域名解析的先后顺序:深入解析
  • 共享内存详解