效果

图1 右侧显示view的内容

主要代码

(1)main_activity.java的内容


import androidx.appcompat.app.AppCompatActivity;
import android.app.ActivityManager;
import android.content.pm.ActivityInfo;
import android.content.pm.ConfigurationInfo;
import android.os.Build;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;
import android.widget.LinearLayout;
import android.widget.Toast;public class MainActivity extends AppCompatActivity {private boolean supportsEs2;
//    ModelGLSurfaceView glView;CubeGLSurfaceView m_view;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);checkSupported();if (supportsEs2) {// 设置为全屏requestWindowFeature(Window.FEATURE_NO_TITLE);getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);// 设置为横屏模式setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);setContentView(R.layout.activity_main);// 初始化GLSurfaceViewm_view=new CubeGLSurfaceView(this);m_view.requestFocus();//获取焦点m_view.setFocusableInTouchMode(true);//设置为可触控LinearLayout ll=(LinearLayout)this.findViewById(R.id.ShowView);///将view显示在指定的view中,而不是全页面ll.addView(m_view);} else{setContentView(R.layout.activity_main);Toast.makeText(this, "当前设备不支持OpenGL ES 2.0!", Toast.LENGTH_SHORT).show();}}@Overrideprotected void onPause() {super.onPause();if (m_view != null) {m_view.onPause();}}@Overrideprotected void onResume() {super.onResume();if (m_view != null) {m_view.onResume();}}private void checkSupported() {ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();supportsEs2 = configurationInfo.reqGlEsVersion >= 0x2000;boolean isEmulator = 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"));supportsEs2 = supportsEs2 || isEmulator;}
}

(2)布局文件内容

<?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=".MainActivity"><LinearLayoutandroid:id="@+id/ShowView"android:layout_width="264dp"android:layout_height="363dp"android:orientation="horizontal"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintTop_toTopOf="parent"tools:ignore="MissingConstraints"tools:layout_editor_absoluteX="56dp"><!--                <View--><!--                    android:id="@+id/view"--><!--                    android:layout_width="match_parent"--><!--                    android:layout_height="wrap_content" />--></LinearLayout></androidx.constraintlayout.widget.ConstraintLayout>

(01)OpenGL es中只在指定区域渲染view相关推荐

  1. [OpenGL ES 01]OpenGL ES之初体验

    [OpenGL ES 01]OpenGL ES之初体验 罗朝辉 (http://blog.csdn.net/kesalin) 本文遵循"署名-非商业用途-保持一致"创作公用协议 一 ...

  2. OpenGL ES之离屏渲染的帧缓冲区对象FBO的说明和使用

    一.什么是 FBO ? FBO(Frame Buffer Object)即帧缓冲区对象,实际上是一个可添加缓冲区的容器,可以为其添加纹理或渲染缓冲区对象(RBO). FBO 本身不能用于渲染,只有添加 ...

  3. OpenGL ES 3.0管线渲染流程

    OpenGL ES 3.0 实现了具有可编程着色功能的图形管线,由两个规范组成: OpenGL ES 3.0 API规范 OpenGL ES 着色语言3.0规范 下图概述了OpenGL ES 3.0 ...

  4. 关于OpenGL ES中的纹理压缩

    基于OpenGL ES的压缩纹理有常见的如下几种实现: 1. ETC1(Ericcson texture compression) 2. PVRTC(PowerVR texture compressi ...

  5. Android OpenGL ES FrameBuffer离屏渲染

    作用 FrameBuffer Object,也称FBO,离屏渲染,可以摆脱屏幕的束缚,在后台做图像处理. 理解 FrameBuffer和Texture绑定,FrameBuffer犹如画板,而Textu ...

  6. OpenGL ES 2.0 总体概述

    文章目录 OpenGL ES 2.0 总体概述 1. OpenGL ES 的两个小伙伴 1.1 EGL 1.2 GLSL 2. 屏幕图片的本质和产生过程 3. OpenGL ES pipeline 3 ...

  7. OpenGL ES: (5) OpenGL的基本概念、OpenGL ES 在屏幕产生图片的过程、OpenGL管线(pipeline)...

    一. OpenGL的基本概念 OpenGL 的结构可以从逻辑上划分为下面 3 个部分: 图元(Primitives) 缓冲区(Buffers) 光栅化(Rasterize) 图元(Primitives ...

  8. OPENGL ES 2.0 知识串讲(1)――OPENGL ES 2.0 概括

    更多图形知识请关注我的公众号: 前言 电脑是做什么用的? 电脑又被称为计算机,那么最重要的工作就是计算.看过三体的同学都知道, 电脑中有无数纳米级别的计算单元,通过 0 和 1 的转换,完成加减乘除的 ...

  9. OpenGL ES 2.0学习之路---2.Hello Triangel:一个OpenGL ES 2.0例子

    该例子主要包括以下内容: 使用EGL创造一个显示渲染窗口平面 装载顶点和片段着色器 创造一个项目,联系顶点和片段着色器,链接项目 设置视窗 清除颜色缓冲区 最基本的渲染 在EGL窗口显示颜色缓冲区的内 ...

最新文章

  1. CPU 核数与线程数有什么关系?
  2. redis中的hash
  3. tf.ConfigProto()详解
  4. HtmlGenericControl
  5. oracle死锁视频教程,两个Oracle死锁解决实例
  6. Yslow-23条规则
  7. Windows之node.js安装
  8. rwg52_h头文件注释
  9. 什么叫ServletContext对象?
  10. Nero Multimedia Suite 10.6.11300
  11. 文字环形旋转加载js特效
  12. 读《大秦帝国》第三部
  13. 360众筹网_360众筹平台
  14. 数据文件检验坏块的利器-dbv
  15. ACM模板 | 学习笔记 树相关
  16. 赛维LDK重整方案被法院强裁通过
  17. 在Word中隐藏文字
  18. [导入]把域名转到了GoDaddy下
  19. 使用Date日期对象来完成,在页面上根据不同时间显示不同的问候语,如:早上好,中午好,下午好,晚上好等信息...
  20. 模仿猫眼电影静态网页展示

热门文章

  1. cube一站式云原生机器学习平台-推理服务的工程化加速
  2. 解线性方程组——有机物燃烧的化学方程组的配平
  3. DNS 正向查找与反向查找
  4. mybatis框架增删改的注意事项 ,不同数据库取消转义的方法
  5. 临时更换swap优先级
  6. 吸烟增加后代患哮喘的风险
  7. 安装php扩展 ffmpeg-php
  8. Linux搭建SVN 服务器(转)
  9. daemon进程(转)
  10. discuz开发学习