Unity - Android Share Texture
需求来源
原始的需求是打算在Unity中申请一个Texture,但是Texture的source部分是由Android提供的。
应用的场景:在Unity中显示一个Android App的画面。
技术点
- [x] Unity & Android Share Texture
- [x] Android VirtualDisplay
- [x] OpenGLES
- [x] FBO
原始的需求是打算在Unity中申请一个Texture,但是Texture的source部分是由Android提供的。
应用的场景:在Unity中显示一个Android App的画面。
流程上,是两个线程:
整体的函数调用全地图如下:
最近介入了VR的项目,很多时候都会听到小伙伴们在谈论一些晦涩的名词,其中提到比较多的是ATW,因此溯源了一下整个词语的出处,所以才发现了这边John Carmack的文章。借着做项目的机会匀了一点时间读了这篇文章,也借这个机会组织了小伙伴们一同分享了一下,才有了这样的一篇读书笔记。
Human sensory systems can detect very small relative delays in parts of the visual or, especially, audio fields, but when absolute delays are below approximately 20 milliseconds they are generally imperceptible.
Interactive 3D systems today typically have latencies that are several times that figure, but alternate configurations of the same hardware components can allow that target to be reached.
monado的源码下载地址:https://gitlab.freedesktop.org/monado/monado
ReadMe.md的部分已经有阐释了整个工程的目录概要:
src/xrt/include
- headers that define the internal interfaces of Monado.src/xrt/compositor
- code for doing distortion and driving the display hardware of a device.src/xrt/auxiliary
- utilities and other larger components.src/xrt/drivers
- hardware drivers.src/xrt/state_trackers/oxr
- OpenXR API implementation.src/xrt/targets
- glue code and build logic to produce final binaries.src/external
- a small collection of external code and headers.参考根目录下的settings.gradle
文件,可以看出整个工程其实是包含了4个部分的:
':src:xrt:auxiliary:android'
':src:xrt:ipc:android'
':src:xrt:targets:android_common'
':src:xrt:targets:openxr_android'
这个是我们非常熟悉的Android
工程的结构了,根据以往的经验,我们需要从com.android.application
的工程入手进行分析。
2021年,gerrit-prv代码226笔,gerrit代码119笔。
gitlab新增piggylab项目:26个。
2021年整体是非常顺利的,完成了年初制定的绝大部分计划,几个里程碑事件:
这一年所有的事情都指向一个目标,提高复用率。
Instrumentation Test一直都存在,但是一直被忽略,大部分的代码都不会有UT的编写,所以更加不会有IT的编写了。简单来说I(nstrumentation)T(est)是需要跑到具体手机上的测试用例,对于我们需要用到GPU,DSP的应用来说还是非常实用的,毕竟离线环境和线上环境千差万别,最终还是要以具体的板子效果为准。
配置的部分是第一个坑,整个测试到入口跟MainActivity
很像,需要先设定一个testInstrumentationRunner
,这个部分是配置在build.gradle
中的:
这一篇文章是针对《model_personalization》项目的一个代码解读。
https://github.com/tensorflow/examples/tree/8ad788d9c78fb914d4c768ad19beb552ca3ae6fc/lite/examples/model_personalization
代码解读分为四个步骤:
为什么需要打印出backtrace呢?因为懒,不想通过IDE工具去看代码了解整个构造。
什么是stack wind以及stack unwind:
When program run, each function(data, registers, program counter, etc) is mapped onto the stack as it is called. Because the function calls other functions, they too are mapped onto the stack. This is stack winding.
Unwinding is the removal of the functions from the stack in the reverse order.
因此如果要打印出backtrace,其实要做的操作就是unwind。
“要么冲一下50星吧!”
在一片盲目乐观的情况下,开启了S23赛季的旅程,事后才知道,这个世界有两类人真的无畏,一类是真强者,另外一类是无知者,很可惜我TMD是后者。
KPI制定完了,下面就是项目执行计划了,初步的计划是这样的,上赛季10星,落下来应该在钻石1,一个赛季3个月12周,我先在3周内打上王者,再用2周上20星,接着每2周上10星,最后3周冲击50星。
同时,我还梳理了一下自己的英雄池,毕竟自己最多也就打到30星,已经有两年没有怎么玩了,之前还是组排车队,而这次的任务大概率是要靠自己单排了,还是很有必要总结一下自己的优劣势。大致定下了这么几个英雄:
3周上王者的任务是顺利完成了,但是意外得知了一个消息,IOS可以转号到Android,那么现在有两个选择放在我面前:
在Android中,一般应用都是在build时通过写入versionCode
和versionName
来显示标注。
在设备端,我们也可以通过adb shell dumpsys package 包名
的方式来查看对应的信息。
其中,我们可以看到versionCode = 1102120023
,而versionName=v2.12.23.191220.AABBCC.DDDDDD
。
很明显,一般来说versionCode
是给机器看的,是一个递增的数字,而versionName
是给人看的,是一串有实际意义的字符串。
官方教程:https://developer.android.com/studio/profile/android-profiler?hl=zh-CN
Android Profiler提供了CPU,Memory,Network以及Energy等等信息的追踪和分析,此处我们仅关心CPU部分。
https://mart.coding.net/project/7929
Product By:DX