首页 > 其他分享 >【踩坑】Unity Android(安卓)平台 Render texture 有残留,即使调用 DiscardContents 还是清除不全。

【踩坑】Unity Android(安卓)平台 Render texture 有残留,即使调用 DiscardContents 还是清除不全。

时间:2024-02-10 23:44:18浏览次数:25  
标签:Render 安卓 texture DiscardContents camera var levelUnitRT cullingMask

在编辑器环境下OK,打包成PC客户端也OK,但是打包成 apk,在 安卓 手机上运行的时候就会有残留。

 

我的代码如下。主要是在 LateUpdate() 中,修改特定摄像机的 cullmask,在捕捉到制定的 rendertexture 上(即此处的 m_levelUnitRT)。

 

    void LateUpdate()
    {
        if (m_levelUnitRT != null)
        {
            var camera = CoolGame.fguiSystem.stageCamera;
            var oldCullingMask = camera.cullingMask;
            m_levelUnitRT.DiscardContents();
            camera.cullingMask = LayerMask.GetMask("LevelUnit");
            camera.targetTexture = m_levelUnitRT;
            camera.Render();
            camera.targetTexture = null;
            camera.cullingMask = oldCullingMask;
        }
    }
    private void _InitLevelUnitRT()
    {
        m_levelUnitRT = new RenderTexture(Screen.width / 2, Screen.height / 2, 24, RenderTextureFormat.ARGB32);
        m_levelUnitRT.name = "LevelUnitRT";
        m_levelUnitRT.Create();
        cellBorder.texture = m_levelUnitRT;
        cellShadow.texture = m_levelUnitRT;
    }

image

解决方法

        if (m_levelUnitRT != null)
        {
            var camera = CoolGame.fguiSystem.stageCamera;
            var oldCullingMask = camera.cullingMask;
            var oldClearFlags = camera.clearFlags;
            m_levelUnitRT.DiscardContents();
            camera.cullingMask = LayerMask.GetMask("LevelUnit");
            camera.targetTexture = m_levelUnitRT;
            camera.clearFlags = CameraClearFlags.SolidColor;
            camera.Render();
            camera.targetTexture = null;
            camera.cullingMask = oldCullingMask;
            camera.clearFlags = oldClearFlags;
        }

在 camera.Render() 前将 clearFlags 修改成 CameraClearFlags.SolidColor。

参考了:https://forum.unity.com/threads/rendertexture-bug-on-android.814599/

标签:Render,安卓,texture,DiscardContents,camera,var,levelUnitRT,cullingMask
From: https://www.cnblogs.com/bakabird/p/18013114/unity_rendertexture_notclear

相关文章

  • Android Studio 只启动安卓模拟器的脚本实现
    基本上都是参考:https://blog.csdn.net/qq_39970857/article/details/122186784一.找到SDK安装路径这俩张懒得画图,是偷的)二.win+r打开cmd(反正不用管理权限,随便怎么打开)......
  • 扒开源安卓性能测试工具moblieperf源码——开发属于你自己的性能稳定性测试工具
    moblieperf下载和使用moblieperf由阿里巴巴开源的Android性能测试工具下载:官方源码地址mobileperfgithub使用:使用pycharm打开下载的项目使用只需要修改配置文件config.conf即可运行采集:a.mac、linux在mobileperf工具根目录下执行shrun.sh;b.windows双击run.bat配置......
  • 安卓服务的常见问题,性能优化以及应用场景剖析
    一、引言在安卓开发中,服务(Service)扮演着至关重要的角色,它们在没有用户界面的情况下,为用户提供了长时间的后台任务执行能力。本文将探讨服务常见问题、优化策略、应用场景以及开发过程中应注意的事项。二、应用场景服务作为安卓应用程序的重要组成部分,主要用于在后台执行持续性的、......
  • 安卓动态链接库文件体积优化探索实践
    背景介绍应用安装包的体积影响着用户下载量、安装时长、用户磁盘占用量等多个方面,据GooglePlay统计,应用体积每增加6MB,安装的转化率将下降1%。   安装包的体积受诸多方面影响,针对dex、资源文件、so文件都有不同的优化策略,在此不做一一展开,本文主要记录了在研发时针对动态......
  • appium模拟安卓手机按键
    APPium自动化过程中,可能会需要模拟操作手机按键,如返回键,home键,音量键等等。要模拟按键操作得用到keyevent方法,参数如下keyevent(keycode,metastate=None)metastate:默认值不用填操作手机音量键和返回键的代码如下:fromappiumimportwebdriverimporttimefromappium.webd......
  • 「悬浮捷径SoftCircle」安卓平台的hao123,一键打开万物
    罗老师的onestep一步发布之前,终端的打开形式还拘泥于桌面和负一屏这种方式够简洁,但缺点明显:1.入口单一性:只能在app首页和各种扫一扫之间选择和切换2.操作复杂:入口切换需要频繁的进入退出桌面,步骤过于繁杂以下是悬浮捷径SoftCircle的解决方式1.入口的丰富性:安卓平台......
  • 安卓开发八——页面切换的关联
    我们开始的页面是我们的所有条目所在的月份,所以我们要设计监听事件,当点击时就会切换到这个月的账单界面。我们还要将这个月份的值带入下一个页面,然后根据这个值来插寻账本条目。listView.setOnItemClickListener(newAdapterView.OnItemClickListener(){@Overrid......
  • 安卓开发七——主管理页面
    新增月份管理页面,将新增账本移植到这个页面主页面视图<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height......
  • 安卓开发六——账本的条目视图的适配
    我们的一条数据项目包括,收入(指出)、说明、日期、金额四项,所以我们要自定义一个适配器这里适配器的一个列表的各个单位的类型是一个打包好的类的类型。这个类也是自己创建的packagecom.example.myapplication;publicclasscostList{privateString_id;privateS......
  • 安卓开发五——创建数据库和增加数据
    packagecom.example.myapplication;importandroid.content.Context;importandroid.database.sqlite.SQLiteDatabase;importandroid.database.sqlite.SQLiteOpenHelper;publicclassDBHelperextendsSQLiteOpenHelper{privatestaticintDB_VERSION=1;......