自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(126)
  • 资源 (3)
  • 收藏
  • 关注

原创 Android TV 视图体系分析-笔记SurfaceFlinger

首先可以梳理出SurfaceFlinger的类图然后可以看下这些类大致是干嘛的,梳理出主要的类===========先看主文件夹下的类================1.Barrier用于控制互斥访问的2.Colorizer用户颜色转换3.DisplayDevice(重要类)显示设备类4.DispSync(重要类)DispSync维护了显示设备基于硬件的...

2019-03-03 20:36:49 1279

原创 Google VR开发-Cardboard VR SDK头部追踪实现(罗德里格旋转公式)

一、罗德里格旋转矩阵的作用可以参考百度百科和维基百科进行了解。个人概括来说就是罗德里格旋转公式是用来求旋转后新向量的公式:而这个公式可以转换成矩阵形式:也就是说罗德里格旋转矩阵是用来和某个向量V相乘得到这个向量旋转后新向量Vrot的

2017-08-02 14:07:22 2798

原创 Google VR开发-Cardboard VR SDK头部追踪实现(牵涉到的抽象模型)

待完善

2017-08-02 14:04:43 714

原创 Google VR开发-Cardboard VR SDK头部追踪实现(隐马尔可夫模型)

隐马尔可夫模型是理解卡尔曼滤波的基础。这里只单纯记录一下对这个模型的理解,实际这部分只需要看维基百科就可以了。维基百科:https://zh.wikipedia.org/wiki/%E9%9A%90%E9%A9%AC%E5%B0%94%E5%8F%AF%E5%A4%AB%E6%A8%A1%E5%9E%8B1. 其中{\displaystyle x(t)}我们称为隐藏变数(h

2017-08-02 14:01:11 1235

原创 Google VR开发-Cardboard VR SDK头部追踪实现(卡尔曼滤波)

待完善

2017-08-02 13:56:32 862

原创 Google VR开发-Cardboard VR SDK反畸变实现

上一篇文章分析了Cardboard SDK的生命周期设计。这里我们看下畸变部分的实现。Cardboard中将畸变这部分封装成了一个Distortion类和DistortionRenderer类。我们看下Distortion这个类: private static final float[] DEFAULT_COEFFICIENTS = { 250.0F, 50000.0

2017-08-02 13:53:29 2929 1

原创 Google VR开发-Cardboard VR SDK生命周期设计

本篇从两个角度分析Cardboard VR SDK生命周期的设计目录:一、应用端生命周期调用二、SDK端生命周期功能实现一、应用端生命周期调用(1)主MainActivity中有一个CardboardOverlayView类型的成员mOverlayView,这是遮盖层的视图(2)CardboardOverlayView中有CardboardOverlayEyeV

2017-08-02 11:57:51 1016

原创 Oculus VR SDK实现-Oculus针对大量显示数据的buffer设计

参考文章:Vertex Array的性能表现:http://www.openglsuperbible.com/2013/12/09/vertex-array-performance/关于Vertex Array的官方解释:https://www.khronos.org/opengl/wiki/Vertex_Specification#Vertex_Array_Object这里说明v

2017-08-02 10:57:35 749

原创 Oculus VR SDK实现-Oculus针对双眼显示的交换链设计

首先我们关注一下ovrFramebuffer这个结构体:typedef struct { int Width; int Height; int Multisamples; int TextureSwapChainLength; int TextureSwapChainIndex; ovrTextureSwapChain *

2017-08-02 10:40:06 1454

原创 Oculus VR SDK实现-Oculus左右眼视角的偏移实现

首先人的头部在场景中是对应有一个姿态的,我们称这个为头部姿态(HeadPose)。而因为头部和双眼之间还有一个差异,因此我们将双眼中心的姿态称为双眼中心姿态(centerEyePose)。我们分两步来计算:一、首先计算出双眼中心视角矩阵centerEyeViewMatrix二、然后根据双眼中心视角矩阵计算出左右眼视角矩阵。一、计算出双眼中心视角矩阵centerEyeVi

2017-08-02 10:27:51 2268 1

原创 Google VR Android开发(二)-Simplevideowidget分析

Simplevideowidget这个Demo运行起来的效果如下:单击视频显示区域可以暂停/继续播放。点击眼镜按钮可以进入到双眼VR模式:现在分析下代码实现:只有一个Activity文件:主要是显示了一个SDK中的VrVideoView控件进入VR双眼模式和全屏显示的切换按钮都在这个控件里面。所以要分析下这个控件的实现。模式切换的实现是在VrVi

2017-07-18 17:10:48 2277

翻译 zephyr-浮点运算服务

注意:当前浮点运算服务只在基于ARM Cortex-M4或者inter X86架构的开发板上可用,此服务与体系架构相关概念内核允许应用的tasks和fibers使用开发板配置中支持的浮点寄存器(内核不支持通过ISRs方式使用浮点寄存器)内核可以配置成仅为应用提供需要的浮点运算服务。支持下面三种操作模式。此外,内核对SSE寄存器的支持也可以被包含,舍弃或者关闭No FP

2016-10-19 21:10:03 589

翻译 zephyr-原子服务

概念内核支持名为atomic_t的32位的原子数据类型。一个这种类型的变量可以被task,fiber或者ISR以中断的方式进行读操作。这保证了目标操作不受高优先级上下文的调度的干扰,甚至当高优先级上下文操作同一个变量。目的使用仅需要操作一个32位的数据的原子服务来实现对临界资源的处理Use the atomic services to implement critica

2016-10-19 20:43:04 1267

翻译 USB Host and Accessory

Android 以两种模式支持一系列的USB外围设备和USB附件(实现了Android附件协议的硬件):USB accessory 和USB host。1.在USB accessory 模式下,外部USB硬件作为USB主设备,这可以让不具备主设备特性的硬件有能力和USB硬件进行交互。Android USB acdessories 必须设计为可以与Android设备配合工作,并且遵循

2016-09-29 17:16:43 872

翻译 zephyr-内核时钟

概念内核支持两种不同的时钟机制。64位系统时钟--64位系统时钟是内核基于时间的服务的基础。这个时钟又ticks计数,并以一个由应用程序指定的频率递增。内核允许这个时钟通过读取timer的方式被直接访问,也可以通过使用kernel timer或者超时机制来直接访问。32位硬件时钟--32位硬件时钟被用作系统时钟步长的来源。这个时钟用来测量未指定单元(cycles),并以一个

2016-08-18 19:19:17 1351

翻译 zephyr-可执行上下文服务-定制数据值机制

每一个内核可执行上下文都会和一个表征这个上下文是一个task、fiber还是内核中断处理上下文的type相关联。所有task、fiber上下文都有一个特殊的线程特征值,以使它们被识别。每个task和fiber可以支持一个私有的32位的线程定制的数据值,这个值只能被它们自己访问,并可能被应用用于任何目的,默认为0.注意:这个定制数据值不能用于ISRs,因为这些操作只能在共享的内核中断处理上下

2016-08-18 16:16:06 633

原创 cardboard SDK analysis

1.了解Cardboard SDK:https://developers.google.com/cardboard/android/Cardboard和Gear VR的SDK都一样,都是基于OpenGL 来创建VR 应用,而主要的图像工作就放在Unity端。Cardboard的开发工具包简化了许多通用的VR开发工作:Lens distortion correction.(变

2016-02-29 15:30:01 2645

翻译 zephyr-内核初级手册

这部分包括zephyr内核生态系统的以下四个方面:System FundamentalsKernel FundamentalsApplication FundamentalsSource Tree StructureSystem FundamentalsAn application image is a binary that controls th

2016-02-25 19:57:02 3096

翻译 zephyr-编译和运行应用

编译一个示例应用$ cd $ZEPHYR_BASE/samples/hello_world/microkernel$ make上面的编译时采用的是定义在Makefile文件中的默认配置,如果你是为其他平台编译程序,那么请修改配置项BOARD$ make BOARD=minnowboard microkernel 和 nanokernel 的示例程序分别可以在 $ZE

2016-02-25 18:54:06 2245

翻译 zephyr-开发应用

开发 Zephyr 应用在安装完开发环境后现在你可以准备开发你自己的zephyr应用了。为了帮助你完成这个任务,以下资源可供参考: Application Development Primer 板块包含你开发,运行和构建你的zephyr应用所需要的所有信息。 Contributing Code 板块包含所有代码协同,代码风格和Gerrit使用的项目指导信息。确保你提交代码到

2016-02-25 17:08:33 1147

翻译 Zephyr-开发向导

1.设置开发环境1.1下载代码$ git clone https://gerrit.zephyrproject.org/r/zephyr zephyr-project执行上述命令可以下载源码到本地注意:当你已经开始开发,按以下步骤注册一个Linux基金会的账户:Requesting a Linux Foundation Account.要点:Linux用户即使已

2016-02-22 14:56:36 1971

翻译 Zephyr-项目介绍

Zephyr kernel是一个为资源有限系统设计的一个为内核:从简单的嵌入式环境检测传感器、LED穿戴设备到复杂的智能手表和物联网无限网关。Zephyr被设计支持多体系架构,包含ARM Cortex-M,intel X86和ARC等等:Supported BoardsThe following boards are currently supported:NoteDe

2016-02-22 11:58:27 1726

翻译 Zephyr-Llinux基金会发布Zephyr项目

原文地址:https://www.zephyrproject.org/news/linux-foundation-announces-project-build-real-time-operating-system-internet-things-devices开源项目Zephyr旨在形成一个实时操作系统(RTOS),为了帮助推进这个针对最小内存的物联网设备的项目,其对所有开发者开

2016-02-22 11:11:19 1028

原创 重构-tips

一、重构第一步:为即将修改的代码建立一组可靠的测试环境(靠人工测试不如靠测试用例靠谱)。二、函数应该放在它所使用的数据的所属对象内。三、函数中部分变量(比如比较重要的计算结果),可以使用get,set将其设为成员变量来促成较简洁的设计四、如果一个对象的值可能随时随其对象类型发生变化,对象类型应可以动态改变,那么可以将此对象类型设为B。类A中包含一个基类B的成员对象b,基类B中包含一

2016-01-27 20:59:27 695

原创 Native层-OpenGL ES-双缓冲离屏渲染

OpenGL ES相关的数据结构:typedef struct { EGLint MajorVersion; EGLint MinorVersion; EGLDisplay Display; EGLConfig Config; EGLSurface TinySurface; EGLSurface MainSurface; EGLContext Context;} ovrEgl;

2016-01-14 17:11:14 5098 2

原创 Android-四元数-控制VR设备的旋转

首先参考维基百科了解四元数的基本概念:https://zh.wikipedia.org/wiki/%E5%9B%9B%E5%85%83%E6%95%B0%E4%B8%8E%E7%A9%BA%E9%97%B4%E6%97%8B%E8%BD%AC参考http://www.2cto.com/kf/201210/162858.htmlhttp://blog.csdn.net

2016-01-12 11:46:28 4426

翻译 Android图形系统-架构

图形架构这部分阐述了一些开发者需要知道的和Surface,SurfaceHolder,EGLSurface,SurfaceView,GLSurfaceView,SurfaceTexture,TextureView和SurfaceFlinger相关的知识。本文档描述了Android系统级别图形框架的基本元素,以及如何在应用和多媒体系统中使用这些元素。焦点在于图像数据的buff

2015-12-29 11:59:27 902

翻译 Android 图形系统框架

Android框架为2D和3D提供了一系列的图像渲染API,以与不同品牌制造商的图像驱动进行交互。所以从整体上了解这些API是如何工作的非常重要。这里介绍了建立在图像驱动之上的硬件抽象层(HAL)Android应用开发者可以通过两种方式将图像描画到屏幕上:Canvas和OpenGL,关于Android图像组件的详细描述参见官网的System-level graphics archite

2015-12-28 16:10:30 3171

转载 OpenGL - FBO

原文链接http://www.songho.ca/opengl/gl_fbo.html示意图如下:要点:1.FBO有多个颜色缓冲区绑定点,一个深度缓冲区绑定点和一个模板缓冲区绑定点,用于将三者绑定到FBO2.FBO提供了一种高效的切换机制,可以绑定和解绑上述三种缓冲区,其中提供多个颜色缓冲区绑定点是为了支持同时渲染多个目标

2015-12-10 09:21:55 1207

翻译 OpenGL Frame Buffer Object (FBO)

http://www.songho.ca/opengl/gl_fbo.html

2015-12-08 10:14:21 687

原创 opengl

openGL ES 3.0 图像管道示意图:Vertex shader的输入可以是:Shader program、Vertex shader 、Uniforms、Vertex shader inputs(or attributes)、Uniforms、SamplesVertex Shader计算出的结果交给Fragment Shader(片段着色器)处理Vertex shade

2015-11-20 20:13:48 588

翻译 pthread_cond_wait

官方说明参见:http://pubs.opengroup.org/onlinepubs/007908775/xsh/pthread_cond_wait.htmlNAMEpthread_cond_wait, pthread_cond_timedwait - wait on a condition SYNOPSIS#include pthread.h>int pth

2015-11-17 18:30:35 902

原创 Native-Activity

NativeActivity的介绍在官网:http://developer.android.com/reference/android/app/NativeActivity.html使用NativeActivity无需继承这个类,只需要在manifest中进行声明,并使用NDK中的API即可示例参见:android-ndk-r10e\samples\native-activity这一工

2015-11-16 16:25:25 2035

原创 陀螺仪

一、首先获取SystemSensorManager,并强制转换成父类SensorManager来使用sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);二、之后通过getDefaultSensor,利用钩子函数,从SystemSensorManager的ArrayList sFullS

2015-11-03 17:23:04 1782 1

原创 Linux/Unix设计思想(Linux and the Unix Philosophy)

小即是美尽快建立原型采用短周期迭代式反馈的开发模式优先考虑程序和数据的可移植性(采用文本方式存储数据的原因)应保存一些自己编写的常用的工具集,里面包括一些程序和脚本。在一台机器到另一台机器,一个项目到另一个项目,一份工作到另一份工作的时候始终如影随形。充分利用软件的杠杆效应避免NIH综合征,充分利用他人已有的成果尽量利用工具实现自动化程序不创建数据,只处理数据,因此

2015-10-21 10:58:32 521

原创 持续交付-发布可靠软件的系统方法

常规的软件部署的反模式如下一、手工部署软件:1.有一份非常详细的文档来描述各个执行步骤及每个步骤中易出错的地方。2.以手工测试来确认该应用程序是否运行正确3.发布时,常常会修正一些在发布过程中产生的问题4.如果是集群环境部署,常常会发现在集群中各环境的配置都不相同,比如应用服务器的连接池设置不同或文件系统有不同的目录结构等5.发布过程需要较长时间6.发布结果不可

2015-10-19 14:00:25 1219

原创 第三方SDK分析1

mark

2015-09-06 15:36:52 670

原创 Android原生系统1

mark

2015-09-06 15:29:42 655

翻译 Oculus VR SDK实现 -主要结构体及Api接口设计

其中的ovrHmdInfo是VR 头盔(眼镜)相关的一个结构体,包含,分辨率,刷新率,默认分辨率,和水平垂直视野角度。显示一幅分辨率为2560*2440的图像的时候,每个像素在眼睛中所占用的视角约为0.06度。展现完整360度就需要6000个像素(360/0.06=6000),展现90度的视角就需要占用其中的1/4。分辨率为1536*1536的图像能够产

2015-09-04 15:41:00 4259 11

原创 SDK 编码格式要求

mark编码标准:注释标准:java程序按照javadoc标准C++程序按照doxygen标准

2015-08-30 15:39:34 1035

西北农林科技大学电子工艺实习报告-收音机组装

西北农林科技大学电子工艺实习报告,内容包括焊接注意事项,电路原理图,元件电气特性测试数据,实习日志,实习总结

2012-01-03

西北农林科技大学信息工程学院计算机组成原理实习报告

实习要交的5个报告(不包括设计性实验)。

2012-01-03

电子工艺实习报告 收音机组装

西北农林科技大学信息工程学院电子工艺实习报告,收音机组装,包括焊接技术要点,电路原理以及测试数据和实验总结

2012-01-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除