(01)OpenGL es中只在指定区域渲染view
效果
图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相关推荐
- [OpenGL ES 01]OpenGL ES之初体验
[OpenGL ES 01]OpenGL ES之初体验 罗朝辉 (http://blog.csdn.net/kesalin) 本文遵循"署名-非商业用途-保持一致"创作公用协议 一 ...
- OpenGL ES之离屏渲染的帧缓冲区对象FBO的说明和使用
一.什么是 FBO ? FBO(Frame Buffer Object)即帧缓冲区对象,实际上是一个可添加缓冲区的容器,可以为其添加纹理或渲染缓冲区对象(RBO). FBO 本身不能用于渲染,只有添加 ...
- OpenGL ES 3.0管线渲染流程
OpenGL ES 3.0 实现了具有可编程着色功能的图形管线,由两个规范组成: OpenGL ES 3.0 API规范 OpenGL ES 着色语言3.0规范 下图概述了OpenGL ES 3.0 ...
- 关于OpenGL ES中的纹理压缩
基于OpenGL ES的压缩纹理有常见的如下几种实现: 1. ETC1(Ericcson texture compression) 2. PVRTC(PowerVR texture compressi ...
- Android OpenGL ES FrameBuffer离屏渲染
作用 FrameBuffer Object,也称FBO,离屏渲染,可以摆脱屏幕的束缚,在后台做图像处理. 理解 FrameBuffer和Texture绑定,FrameBuffer犹如画板,而Textu ...
- OpenGL ES 2.0 总体概述
文章目录 OpenGL ES 2.0 总体概述 1. OpenGL ES 的两个小伙伴 1.1 EGL 1.2 GLSL 2. 屏幕图片的本质和产生过程 3. OpenGL ES pipeline 3 ...
- OpenGL ES: (5) OpenGL的基本概念、OpenGL ES 在屏幕产生图片的过程、OpenGL管线(pipeline)...
一. OpenGL的基本概念 OpenGL 的结构可以从逻辑上划分为下面 3 个部分: 图元(Primitives) 缓冲区(Buffers) 光栅化(Rasterize) 图元(Primitives ...
- OPENGL ES 2.0 知识串讲(1)――OPENGL ES 2.0 概括
更多图形知识请关注我的公众号: 前言 电脑是做什么用的? 电脑又被称为计算机,那么最重要的工作就是计算.看过三体的同学都知道, 电脑中有无数纳米级别的计算单元,通过 0 和 1 的转换,完成加减乘除的 ...
- OpenGL ES 2.0学习之路---2.Hello Triangel:一个OpenGL ES 2.0例子
该例子主要包括以下内容: 使用EGL创造一个显示渲染窗口平面 装载顶点和片段着色器 创造一个项目,联系顶点和片段着色器,链接项目 设置视窗 清除颜色缓冲区 最基本的渲染 在EGL窗口显示颜色缓冲区的内 ...
最新文章
- CPU 核数与线程数有什么关系?
- redis中的hash
- tf.ConfigProto()详解
- HtmlGenericControl
- oracle死锁视频教程,两个Oracle死锁解决实例
- Yslow-23条规则
- Windows之node.js安装
- rwg52_h头文件注释
- 什么叫ServletContext对象?
- Nero Multimedia Suite 10.6.11300
- 文字环形旋转加载js特效
- 读《大秦帝国》第三部
- 360众筹网_360众筹平台
- 数据文件检验坏块的利器-dbv
- ACM模板 | 学习笔记 树相关
- 赛维LDK重整方案被法院强裁通过
- 在Word中隐藏文字
- [导入]把域名转到了GoDaddy下
- 使用Date日期对象来完成,在页面上根据不同时间显示不同的问候语,如:早上好,中午好,下午好,晚上好等信息...
- 模仿猫眼电影静态网页展示