6 fyfcauc

尚未进行身份认证

暂无相关简介

等级
TA的排名 3k+

ECS架构笔记

ECS的介绍 云风写的非常好: https://blog.codingnow.com/2017/06/overwatch_ecs.html#moreECS不是银弹,但在3D引擎领域是一个比较合适的框架, 目前的大多数现代3D引擎,或多或少都采用这种设计思想,比如Unity, UnReal。当然后面应该会有更为先进的框架出现。在这近一年的工作中,我基本经历了从传统渲染树到ECS架构的变化,感...

2018-06-29 15:56:30

3D动画概述暨骨骼动画实现

引言本文论述了3D领域内的常见动画类型的运作机制。不同于其他文章简单的罗列和介绍每种类型的3D动画,本文尝试以一种优化演进的思路对动画运作机理进行递进式推演,在这个过程中自然而然的推导出常见的几种3D动画类型,以此证明其出现的必要性和合理性。本文尽量以平实简明的语言来阐述讲解,不过如果阅读者具备初级3D知识,对顶点,矩阵变换,着色器等有一定认识,阅读效果会更好。另外,本文聚焦在相对宏观的机制层面,对

2017-12-20 10:31:53

简单动画系统随笔

最近重构动画系统,虽然只是一个小系统,不过在设计的过程中发现自己在宏观层面的架构搞惯了,这种体量小却结构精巧(和宏观层比就像从模块间到模块内)的也有一定考验性。架构本身不分大小,在一些基本原理上是一致的。随笔记录自己的一些思路和想法:一个抽象动画过程Animation应该有这些通用的属性/接口: 动画状态 (初始/运行/暂停/停止/结束),结束和停止在结果表现上看似乎比较相近,但是因为其对应的现

2017-11-17 11:17:10

OpenGLES 2.0 在 NDK-r15b上的编译问题

在使用NDK-r15b编译引用了OpenGLES 2.0的项目时,会编译不过, 会报下面的一些错误:error: unknown type name ‘GLuint’; did you mean ‘uint’?error: unknown type name ‘GLenum’; did you mean ‘enum’?直接原因是NDK-14引入了unified header,不再使用原来的platf

2017-11-09 13:13:09

Assimp编译实录

Assimp相关:Assimp(https://github.com/assimp/assimp)是一个轻量级的3D模型解析和转换库,支持40+的格式,一些小的3D引擎会使用其作为自己的模型解析加载模块,受众相对比较广泛。该库一直保持着更新,尽管ISSUE不少,不过从目前的小范围使用情况来看,可靠性还可以接受Assimp Android端编译:Assimp本身提供了Andr

2017-05-22 17:07:36

C++ std::mutex 与 const函数

写一个队列需要在其函数之间做同步,首选了std::lock_guard通过RAII的方式来优雅实现确保释放。code很简单,Class自己有一个成员变量mutex, 相关函数在调用前使用其作为构造参数来构造lock_guard即可。编译时遇到了问题,死活编译不过,有了这样的报错: note: candidate constructor not viable: 1st argument (‘cons

2017-04-26 20:13:36

C++ SIGSEGV check list

C++丢了很长时间了,没想到还有捡回来的一天,各种不适应,尤其是指针相关的,SIGSEGV这几天真没少见,总结下自己遇到的SIGSEGV case,下面这个可以作为一个check-list: null指针解引用,这个就不说了,解引用前自己做好预防。要求返回值的函数实现时没有返回值,按理说IDE会提示,但是目前看AS很多时候是不会提示的。使用RAII对象管理内存时,因为临时对象析构的原因导致RA

2017-04-18 20:20:03

OpenglES Blend 笔记

OpenglES 关于 Blend 特性的一些总结:Blend特性默认是关闭的, 默认开启的特性只有抖动。Blend关闭时,如何进行混色(某种意义上,混色是渲染的一个必经步骤(从OpenglES的流程图上看的话),这个问题也可以表述为如果Blend被disable的话,默认的混色策略是什么)? Wiki上对于Blend被关闭时的混色大概是这样描述的: 在blend被关闭时,src的rgb值会被直

2017-04-17 15:19:17

AndroidStudio 使用本地Maven仓库

Android项目直接使用本地aar。 开发过程中有直接使用本地aar的调试需求,Android Gradle插件目前不支持直接以compile file的形式将aar引入(目前似乎只支持Jar)。查询到的有两种方式: 在repositories中增加flatDir设定为aar的所在目录,然后通过在dependencies中增加compile(name: ‘aar库的名称’, ext: ‘aar

2017-04-14 18:17:18

Android 集成 OpenCV native library

Android集成OpenCV native library: 目前来看,OpenCV提供的SDK中已经附带了编译好的.a和.so库,使用者可以根据自己的需要选择动态或者静态库链接。OpenCV SDK下载地址: http://opencv.org/releases.html选择对应版本的Android pack下载。解压开会发现有一个sdk目录(这里以3.0.0版本为例)。sdk/nat

2017-04-10 18:23:12

HtmlSpanner扩展笔记

HtmlSpanner基于https://github.com/NightWhistler/HtmlSpanner, 主体代码基本全部copy,扩展了两点: 原始版本在解析Html时使用了HTMLCleaner解析库,但是在我引入的过程中发现该库以及其依赖的库引入了太多的方法,有点得不偿失。因此Html解析这部分被我进行了替换。对解析功能进行了抽象接口: 在net.nightwhistler.ht

2017-02-16 11:37:07

RecyclerView机制解析: Linear Layout

LayoutManager子类实现的核心有两个地方:onLayoutChildren,该函数的实现决定了ChildView将会怎样被布局(layout),ChildView的测量也会在其中完成,按照之前分析的RecyclerView Measure流程(http://blog.csdn.net/fyfcauc/article/details/54291174), RecyclerView**自身的M

2017-01-13 10:26:11

关于RecyclerView的一些概念

在使用RecyclerView或者阅读其源码前最好明确一些术语代表的概念,脱离具体实现细节,在抽象设计层思考RecyclerView 背后的模型。先以RecyclerView的一个表现形式,一个可以上下滑动的列表作为切入点: 我们为什么偏向使用ListView/RecyclerView而非ScrollView+LinearLayout作为列表的实现方案? 因为列表的长度可能是很长的。从理想的使用

2017-01-12 16:32:51

RecyclerView机制分析: State

State是最简单的RecyclerView子模块。RecyclerView在工作过程中,需要维护一系列状态信息(比如当前处于Layout的哪个阶段,是否处于preLayout阶段等)。并且因为RecyclerView将功能进行了子模块化,还需要传递某些信息到特定子模块来完成功能/通信,RecyclerView把这部分职责集中到了State模块中。State**内部聚合了所需的各项状态信息,扮演了

2017-01-11 15:04:44

RecyclerView机制分析: Recycler

Recycler虽然命名上看,像是只承担了View回收的职责,其真正的定位是RecyclerView的View提供者(甚至是管理者), 包括生成新View, 复用旧View,回收View,重新绑定View等逻辑都被封装在Recycler中。外部调用者只需要调用Recycler的接口获取合适的View即可,不需要关心View获取和配置等具体细节,Recycler对外提供了View的回收和获取服务。先

2017-01-11 12:14:18

RecyclerView机制解析: ItemDecoration

RecyclerView的ItemDecoration机制相对比较简单,不过扩展性很强,在ChildView的测量和展示上为使用者提供了极大的发挥空间,像divider/项目高亮/项目边框等效果都可以轻松实现ItemDecoration可以同时存在复数个,维护在一个列表中,影响是可以叠加的,ItemDecoration的作用顺序从列表头到列表尾。addItemDecoration可以添加一个Ite

2017-01-09 19:10:09

RecyclerView机制解析: Measure

RecyclerView将布局的职责委托给了LayoutManager类,而测量和布局联系很紧密,因此测量的一部分逻辑也被委托给了LayoutManager,RecyclerView大多数情况下会基于LayoutManager布局之后的ChildView分布情况来决定自己的最终尺寸。RecyclerView支持两种measure模式,取决于LayoutManager的mAutoMeasure属性:

2017-01-09 17:50:13

Android Measure 体系简单总结

Android对View的测量是半协商半强制半模糊半具体的.测量过程中的两套尺寸体系: [半强制] ParentView**约束ChildView: **MeasureSpec(通过measure方法传递给ChildView, MeasureSpec本身包含了两类信息: SpecMode和SpecSize): SpecMode = EXACTLY: 给ChildView指定了具体尺寸[半具体]

2017-01-09 14:04:55

RecyclerView机制解析: ChildHelper

RecyclerView在处理消失动画时采用了和Animation/LayoutTranslation相似的策略:某个ChildView需要渐变消失动画效果,那么该ChildView在动画结束前不会从ViewGroup中被remove掉,在动画运行完以后才会被remove掉。上述策略显然会造成不一致:Data中,ChildView对应的Item已经被remove了(数据remove不会因为有动画就延

2017-01-07 15:58:28

RecyclerView 原理机制 宏观总结

RecyclerView源码整体基本读完,先贴个宏观上的总结.RecyclerView可以看作是AbsListView的进化版,在结构设计和模块划分上有了极大的进步,核心是将各项功能独立为模块,然后组合在一起构成RecyclerView。 1. AdapterHelper: Update行为记录/整合/分发系统(时序魔法师,扮演了RecylerView和LayoutManager之间的Po

2017-01-06 17:56:02

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!