- 博客(293)
- 资源 (102)
- 收藏
- 关注
原创 Qt移动应用开发(六):QML与C++的交互
本文主要介绍的是如何使用QML和C++进行交互,难度稍微偏大,适合有经验的Qt开发者进行学习交流。 Qt 5吸收了Qt 4的declarative模块的优点,对底层进行了更改,新建了QPA层,隔离了不同操作系统API和上层Qt代码,同时QML/QtQuick也可以顺利在不同平台上运行。另外由于考虑到让Qt程序接入不同的库函数,因此Qt开放了接口让QML层和C++代码进行交互。之前已经有较多介绍QML与C++交互的文章了,本文仅作为一种有益的补充,更多相关的知识可以查询Qt帮助文档或向我留言。
2014-07-06 19:36:10 12080 7
原创 Qt移动应用开发(五):场景切换
这一次我将介绍我在实际应用开发的时候是如何实现场景的切换的。场景的切换问题是一个架构上的问题,有很多的实现方式,而Qt Quick也提供了很多实用的类,以便我们进行场景的切换。在QML中,场景切换实质上就是将一个界面类隐藏,而另外一个界面类显示的方法。下面的代码就是一个简单的例子:
2014-06-26 13:58:05 9501 12
原创 Qt移动应用开发(四):应用粒子特效
上一篇文章介绍了Qt Quick是怎样对帧动画进行支持的。帧动画的实现离不开状态机、而状态机、动画和状态切换(transitions)则是Qt框架的核心内容,也就是说它们可以建立在任何一个QObject对象中而不必非得依赖Qt的任何图形显示模块。拿一个例子说吧,如果你想实现背景音乐的平滑过渡,你可以不用写多余的代码,将背景音乐的音量作一下动画插值就可以达到效果了。事实上我制作的游戏《吃药了》就是这么实现效果的。而这一篇文章将要聚焦的是Qt Quick另外一个非常强大的系统——粒子系统。
2014-06-24 16:52:11 5498 1
原创 Qt移动应用开发(三):使用精灵图片实现帧动画
上一篇博文讲到了Qt Quick对于动画的一般支持,动画的形式多样,配合不同的插值函数,可以几乎实现所有想要的动画效果,而对于游戏的一些特殊的效果比如说帧动画,Qt更是有专门的类来实现。下面我们就来看看Qt Quick中究竟是对帧动画是如何实现的吧。
2014-06-23 18:19:59 9094 3
原创 Qt移动应用开发(二):使用动画框架
这篇文章主要介绍的是QtQuick的动画框架。Qt Quick动画框架自从Qt4的时代就有了,当时也有很多的demo给我们眼前一亮。脱胎于C++的动画框架,Qt Quick的动画框架绚丽并且易用,非常值得学习。
2014-06-20 20:55:59 5399 5
原创 解决Virtual Box 下安装Mac OS X时出现的“hfs: summary table not allowed on FS with block size of 2048”问题
安装的时候首先出现hfs: summary table not allowed on FS withblock size of 2048错误,然后就是hfs: could not initializc summary table forOSX Base System错误。一开始也不知道是怎么回事,后来在yandex上搜索中找到一篇帖子,它说这是CPU的问题。Mac OS X 10.9不能识别特有的CPU格式,只能识别一部分。于是呢,按照帖子中的做法,首先找到Virtual Box的位置,用命令符的
2014-06-19 23:08:02 5719
原创 Qt移动应用开发(一):适配不同的屏幕
到目前为止,Qt5.3已经出现很长一段时间了,并且已经有一些应用使用Qt进行构建了,我自己也完成了第一款使用Qt构建的手机游戏《吃药了》。那么接下来的几篇文章主要向大家分享我是怎样使用Qt进行移动开发的。Qt移动应用开发分为多篇博客文章,每一篇文章都力求精简不罗嗦,力求为大家提供一个快捷的参考。我在这里也主要将使用Qt制作《吃药了》的方法技巧一一分享给大家。
2014-06-17 22:12:53 8464 6
原创 解决Qt程序在Linux下无法输入中文的办法
一位网友问我如何在Linux的Qt的应用程序中输入中文,我一开始觉得不是什么问题,但是后面自己尝试了一下还真不行。不仅是Qt制作的应用程序,就连Qt Creator都无法支持。后面看了一些资料,了解了Qt应用程序的方法,这里和大家分享一下。
2014-06-17 11:07:24 12349 11
原创 在Eclipse中搭建cocos2d-x的Android开发环境(免cygwin)
在突击几天学习Android开发之后,我开始转向cocos2d-x的Android开发了。由于自己以前有了解过cocos2d-x的开发,当时自己也学过不少游戏引擎,觉得cocos2d-x作为一个游戏引擎实在是比较简陋,没想到cocos2d-x现在红得发紫,这是我远远没有想到的。于是也赶赶潮流的末班车,查资料顺利地在Eclipse上搭建cocos2d-x的Androd开发环境。
2014-06-08 12:22:43 3943 2
原创 开发Android应用的时候遇到的问题
1、在书写Layout.xml的时候 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > </LinearLayout> 其中的xmlns:android=http://
2014-06-07 17:56:14 1853
原创 使用Eclipse搭建Android的开发环境
现在Google以及Android的官网被屏蔽,想下载ADT都不行了。好在以前开发Qtfor Android的时候下载了Android的SDK、NDK以及JDK,这回只需要安装Eclipse以及ADT就行了。ADT没办法从网上下载,那么只好看看国内有没有人分享一下ADT了。于是我找到了ADT-22.6.2,再安装在最新的Eclipse4.3.2,测试了很久,终于好了。
2014-06-05 20:37:29 2332
原创 用Qt制作的Android独立游戏《吃药了》发布
一个多月的努力终于有了回报,我自己研究制作的独立游戏《吃药了》,终于在360应用商店上线了。 这一款游戏呢,使用的是Qt开发的。其实开发这款简单的应用之前,我经历了端游和页游,但是对手游开发了解甚少。不过今年5月20日,Qt官方发布了Qt5.3,对Android和iOS的支持变得成熟起来了,于是我打算冒一个险,使用大家从未使用过的Qt来开发手机游戏。这一个月呢,各种心酸各种泪,我曾经感受到整天10多个小时开发的疲惫;我曾经感受到家人的种种催促;我曾经感受到同事们的好言相劝;我曾经感受到自己内心
2014-06-04 16:34:58 11454 31
原创 在Windows下使用MinGW静态编译Assimp
Assimp是目前比较全的3D格式解析库了,熟悉3D游戏开发的同行都知道,3D的格式非常混乱,各种3D格式在不同场合都有他们特定的应用,游戏引擎只能够解析少部分3D格式,更多实用的格式来自游戏公司自定义的格式。而在开源领域,Assimp算是比较全的3D格式导入库了。它对3D格式理解深入,很适合整合至3D图形引擎中,让你们的程序支持更多3D的格式。
2014-05-25 17:38:50 22187 21
原创 使用GLSL实现对光照的模拟(二)
OpenGL固定渲染管线主要实现的是高洛德着色模型,这是一种简单的光照效果,主要应用在实时渲染领域。我这次实践主要将全局光照、漫反射效果以及镜面反射效果实现了,漫反射使用了兰伯特(Lambert)公式、镜面反射使用可比林 – 冯(Blinn - Phong)公式。
2014-04-20 22:02:51 5432
原创 使用GLSL实现对光照的模拟(一)
OpenGL1.1是很老的OpenGL标准了,即使这样,对于光照也是提供了很好的支持。OpenGL默认的光照着色模型是高洛德(Gouraud)着色模型,虽然着色的精度上不是很好,但却非常好理解,对于该光照模型的例子也非常多,在《OpenGL ES 2.0 Programming Guide》中使用OpenGLES2.0实现了OpenGL1.1的高洛德着色模型。互联网上搜索GLSL+光照,相应的文章也是非常的多。有些直接成了我参考的蓝本。不管怎么样,花了大概一周的时间在以前的基础上使用Qt + OpenGL(
2014-04-12 09:27:25 4752 2
原创 将CEGUI整合进Irrlicht
早就听说CEGUI是一款优秀的游戏GUI库,并且除了能够支持OpenGL、Direct3D9、Direct3D11以外,还可以支持高层的游戏引擎,例如Ogre和Irrlicht。我非常想尝试一下,网上有关CEGUI的例子又不是很多,所以自己花了大概几天的时间,研究了自带的文档,顺利地进行了整合。
2014-04-02 23:24:32 3979
原创 利用着色器实现游戏的公告板特效
利用着色器实现游戏的公告板特效 这几日进展比较缓慢,主要是对自己搭建的基于Qt和OpenGL(ES)2.0的框架进行整合。同时利用现有的技术,制作一个基于OpenGL的公告板效果,同时提升一下自己书写着色器的能力。原创文章,反对未声明的引用。原博客地址:http://blog.csdn.net/gamesdev/article/details/22205357
2014-03-26 19:56:34 4274 1
原创 使用VS2010构建CEGUI0.8.3
CEGUI全称Crazy Eddie's GUI System,Logo是一个疯狂的科学家,它是一款很强大的游戏GUI工具,同时也是Ogre游戏引擎默认的GUI工具。这回我将使用VS2010来尝试构建CEGUI0.8.3。
2014-03-19 19:59:00 3966 3
原创 使用着色器实现蒙皮动画和形变动画
和以往我提供的演示程序不同,这一次我换了一个新的框架,再也不采用OpenGL的固定渲染管线进行渲染了,而是采用兼容OpenGL(ES)2.0的着色器方式进行渲染。当然,为了利用着色器提供的并行计算功能,我用顶点着色器写了硬件蒙皮动画,以尽可能地利用GPU多做一些事情。可惜骨骼动画由于比较复杂,暂时无法用顶点着色器实现,同时表示面部表情的形变动画(Metamorphic Animation)也是在CPU上完成的。
2014-03-16 10:56:14 4194 8
原创 有关Assimp与Qt3D
Qt3D在Qt4时代就已经存在了,当时Qt这个项目还处于诺基亚的管理之下。到了Digia接手Qt的时候,Qt3D作为遗留项目保留了起来。这里有我以前写的有关Qt3D的文字。最初Qt5出来的时候并没有包括Qt3D,很显然,因为要对Qt4时代诸多Qt子项目进行移植谈何容易!于是我们看到Qt5.0的时候Qt库非常精简,仍然有很多的Qt4库没有被移植过来,而且还有很多Bug!我想Digia希望通过Qt5.1、Qt5.2和Qt5.3对这些Bug进行修复,这样一个健壮的Qt基础库才能够支撑诸多Qt4时代的子项目。
2014-03-13 12:12:16 9657 10
原创 蒙皮动画初步完成
蒙皮动画和骨骼动画结合比较紧密,骨骼动画完成了之后,蒙皮动画也比较好做,可是那时我没有掌握透向量、矩阵以及四元数的基本计算,走了一些弯路,也搁置了原来的目标。在学习完一些新的技术后,再回来学习蒙皮动画,觉得到了实现它的时候了,于是制作了这样一个演示程序。
2014-03-07 22:32:41 3604 4
原创 矩阵的平移(translate)没有想象的那么简单
矩阵在计算机图形学中的地位是举足轻重的,几乎所有的变换都需要通过矩阵来完成。比如我接触的DirectX9就用IDirect3DDevice9::SetTransform()的第二个参数就要求传入矩阵的指针,而OpenGL也有直接载入矩阵的方法:glLoadMatrixf(),足以见矩阵在相关领域的作用是多么大。 对三维物体的变换(transform)包括基本的平移(translation)、旋转(rotation)、缩放(scaling)\错切(shearing)以及它们的组合变换。它们都作用
2014-03-06 23:30:35 13194 5
原创 矩阵求逆计算的实现
学习计算机图形学,那么就应该了解计算机图形学的一些基础知识,比如说向量、矩阵、欧拉角以及四元数。其中矩阵尤其是4×4的矩阵在其中是比较重要的一部分了。因为它包含的信息多,一个4×4的矩阵可以表示平移(translation)、旋转(rotation)、缩放(scaling)以及错切(shearing)以及它们组合后的变换(transform)。其中平移、旋转是刚体转换、在三维程序中较常使用,而缩放以及错切由于改变了三维模型的形状,在实际开发中较少使用。为了表示三维图形的逆变换,引入了逆矩阵的概念。逆矩阵使得
2014-03-06 21:42:45 4969 2
原创 利用GPGPU方法将大量数据通过纹理传输至GPU进行计算
在显卡并行计算起源的领域,比如说游戏开发领域,GPU的发展使得其迈向了新的纪元,画面愈加精致,效果愈加震撼,同时并行计算框架CUDA和OpenCL的兴起,则将显卡的计算潜能充分地释放了出来。最后令人高兴的是,以前就受惠于显卡发展的游戏开发领域,将显卡的功能做了新的扩展,以前只用来渲染用的显卡,目前可以做更多逻辑领域相关的事儿了。
2014-02-19 22:26:34 6724 10
原创 OpenGL4.x学习之使用绘制三角形
OpenGL很多人都有所了解,也有很多人使用OpenGL开发过工业级的应用和游戏应用,不过它的最新版本OpenGL4.x了解的人就不是太多了。目前OpenGL的最新版本是4.4,并且NVIDIA和AMD厂商发布了支持OpenGL最新版本的驱动程序,我想基于OpenGL4.x讲解的书籍也会逐渐增多。
2014-02-19 22:08:47 3360
原创 OpenGL4.x学习之使用着色器、绑定VAO以及绘制最简单的图元——点
OpenGL4.x是OpenGL系列最新的规范,它为此制定了很多的概念,包括6种着色器、以及诸多内存对象,让简单的三维显示变得不简单。我也是刚刚了解这些新的特性,所以有的地方阐述不正确还请高手们指出来。
2014-02-19 22:02:27 4059 9
原创 OpenGL4.x学习之搭建基于Qt和OpenGL4.x的框架
OpenGL是一套充满活力的跨平台的渲染API。在2004年前,其不过是刚迈入了2.0版本,那时候Direct3D成为游戏开发者们最青睐的开发框架,HLSL已经被一些游戏所使用,而OpenGL才刚刚支持顶点着色器和片断着色器,人们都为此而感到担心——究竟OpenGL还有没有希望?OpenGL的出路到底在哪里?幸运的是随后的几年,OpenGL在khronos组织和其它巨头的推动下取得了长足的发展,版本很快迈向了3.0甚至是4.0。2012年OpenGL4.3发布,NVIDIA等厂商随机发布了支持它的驱动程序,
2014-02-08 22:26:35 7541 5
原创 OpenGL4.x学习之开发环境的选择
从OpenGL3.2开始,固定渲染的功能逐渐地被废弃,可编程渲染成为了主角,为此我们也必须跟上来,学习OpenGL可编程渲染部分。不过虽然说固定渲染功能被废弃了,有些内容还真的必须是固定渲染流程,没法走可编程渲染。比如说栅格化(Rasterization)和帧缓存(一说帧缓冲区)的操作(Framebuffer operations),在现阶段无法做到可编程。直到OpenGL4.4,着色器的种类增加到了6个。它们分别是顶点着色器、分格化控制着色器(Tessellation control shader)、分格
2014-02-08 15:15:42 4477 6
原创 CUDA程序优化小记(九)
CUDA全称Computer Unified Device Architecture(计算机统一设备架构),它的引入为计算机计算速度质的提升提供了可能,从此微型计算机也能有与大型机相当计算的能力。可是不恰当地使用CUDA技术,不仅不会让应用程序获得提升,反而会比普通CPU的计算还要慢。最近我通过学习《GPGPU编程技术》这本书,深刻地体会到了这一点,并且用CUDA Runtime应用改写书上的例子程序来体会CUDA技术给我们计算能力带来的提升。
2014-01-29 21:59:55 4346 2
原创 CUDA程序优化小记(八)
CUDA全称Computer Unified Device Architecture(计算机统一设备架构),它的引入为计算机计算速度质的提升提供了可能,从此微型计算机也能有与大型机相当计算的能力。可是不恰当地使用CUDA技术,不仅不会让应用程序获得提升,反而会比普通CPU的计算还要慢。最近我通过学习《GPGPU编程技术》这本书,深刻地体会到了这一点,并且用CUDA Runtime应用改写书上的例子程序来体会CUDA技术给我们计算能力带来的提升。
2014-01-29 21:55:24 3099
原创 CUDA程序优化小记(七)
CUDA全称Computer Unified Device Architecture(计算机同一设备架构),它的引入为计算机计算速度质的提升提供了可能,从此微型计算机也能有与大型机相当计算的能力。可是不恰当地使用CUDA技术,不仅不会让应用程序获得提升,反而会比普通CPU的计算还要慢。最近我通过学习《GPGPU编程技术》这本书,深刻地体会到了这一点,并且用CUDA Runtime应用改写书上的例子程序;来体会CUDA技术给我们计算能力带来的提升。
2014-01-26 20:22:03 3754
原创 CUDA程序优化小记(六)
CUDA全称Computer Unified Device Architecture(计算机同一设备架构),它的引入为计算机计算速度质的提升提供了可能,从此微型计算机也能有与大型机相当计算的能力。可是不恰当地使用CUDA技术,不仅不会让应用程序获得提升,反而会比普通CPU的计算还要慢。最近我通过学习《GPGPU编程技术》这本书,深刻地体会到了这一点,并且用CUDARuntime应用改写书上的例子程序;来体会CUDA技术给我们计算能力带来的提升。
2014-01-26 20:04:02 2911 3
原创 CUDA程序优化小记(五)
CUDA全称Computer Unified Device Architecture(计算机同一设备架构),它的引入为计算机计算速度质的提升提供了可能,从此微型计算机也能有与大型机相当计算的能力。可是不恰当地使用CUDA技术,不仅不会让应用程序获得提升,反而会比普通CPU的计算还要慢。最近我通过学习《GPGPU编程技术》这本书,深刻地体会到了这一点,并且用CUDARuntime应用改写书上的例子程序;来体会CUDA技术给我们计算能力带来的提升。
2014-01-11 15:26:40 2927
原创 CUDA程序优化小记(四)
CUDA全称ComputerUnifiedDevice Architecture(计算机同一设备架构),它的引入为计算机计算速度质的提升提供了可能,从此微型计算机也能有与大型机相当计算的能力。可是不恰当地使用CUDA技术,不仅不会让应用程序获得提升,反而会比普通CPU的计算还要慢。最近我通过学习《GPGPU编程技术》这本书,深刻地体会到了这一点,并且用CUDARuntime应用改写书上的例子程序;来体会CUDA技术给我们计算能力带来的提升。
2014-01-11 14:36:22 2998
原创 CUDA程序优化小记(三)
CUDA全称ComputerUnified Device Architecture(计算机同一设备架构),它的引入为计算机计算速度质的提升提供了可能,从此微型计算机也能有与大型机相当计算的能力。可是不恰当地使用CUDA技术,不仅不会让应用程序获得提升,反而会比普通CPU的计算还要慢。最近我通过学习《GPGPU编程技术》这本书,深刻地体会到了这一点,并且用CUDARuntime应用改写书上的例子程序;来体会CUDA技术给我们计算能力带来的提升。
2014-01-02 23:10:05 3602 9
原创 自己动手静态编译和构建Qt5.2,包含Qt3D、Enginio和QtOpenCL
这个月初,Qt5.2正式发布,其中正式支持Android和初步支持iOS构建目标成为最大的亮点。而在它发布之前,我从它的源码镜像库gitorious中获取了最新的源码,并且甄选了两个自己需要研究的组件进行静态编译。两天的时间过去了,我克服了诸多困难,终于成功地在Ubuntu13.10和Windows8上静态编译构建Qt,以后发布Qt的演示程序不用担心客户机运行不了了。
2013-12-26 21:29:42 8734 11
原创 CUDA程序优化小记(二)
CUDA全称ComputerUnified Device Architecture(计算机同一设备架构),它的引入为计算机计算速度质的提升提供了可能,从此微型计算机也能有与大型机相当计算的能力。可是不恰当地使用CUDA技术,不仅不会让应用程序获得提升,反而会比普通CPU的计算还要慢。最近我通过学习《GPGPU编程技术》这本书,深刻地体会到了这一点,并且用CUDARuntime应用改写书上的例子程序;来体会CUDA技术给我们计算能力带来的提升。
2013-12-24 20:28:12 4841 7
原创 CUDA程序优化小记(一)
CUDA全称Computer Unified Device Architecture(计算机同一设备架构),它的引入为计算机计算速度质的提升提供了可能,从此微型计算机也能有与大型机相当计算的能力。可是不恰当地使用CUDA技术,不仅不会让应用程序获得提升,反而会比普通CPU的计算还要慢。最近我通过学习《GPGPU编程技术》这本书,深刻地体会到了这一点,并且用CUDARuntime应用改写书上的例子程序;来体会CUDA技术给我们计算能力带来的提升。
2013-12-22 20:14:43 8853 3
原创 一个简单的CUDA程序
上一篇博客中讲到了如何下载并且搭建CUDA的开发环境,这次我将我第一次学到的CUDA程序记录下来,供自己和同行们日后查阅。 如果在安装CUDA之前安装了VisualStudio 2008和Visual Studio 2010的话,那么CUDA会自动检测到开发环境并且配置相关项目模板。这里以Visual Studio 2010为例,我们新建项目的时候它已经显示出了现成的CUDA项目模板。
2013-12-09 23:53:56 5615 3
原创 CUDA在Windows的安装和使用
前段时间在学习并行程序以及GPGPU,首先入门的是CUDA,经过多日的学习,大概了解了CUDA的工作原理,但是有一些技术细节还是需要以后的学习理解才行啊。 在使用CUDA之前,来了解什么是CUDA。CUDA全称ComputerUnified Device Architecture(计算机统一设备架构),为了记住这个全称,可没有少费我工夫。我想大多数人都只知道简称,并不知道全称。不过日常工作中我都仅以“酷达”来指代CUDA,不知道别人是怎么读的呢。 虽然CUDA全称计算机统
2013-12-01 20:59:02 4497
基于Qt有限状态机人工智能的一种实现
2015-06-24
使用QtQuick2改进的阴影映射例子
2015-05-25
使用QOpenGLWidget作为容器改进的阴影映射例子
2015-05-25
使用Qt实现的阴影映射(源代码)
2015-05-25
QML和OpenGL混合渲染(源代码)
2014-07-21
QML和OpenGL混合渲染(演示程序)
2014-07-21
CEGUI整合Irrlicht的例子(演示程序+源代码)
2014-04-02
基于Qt和OpenGL的公告板演示程序
2014-03-26
形变动画的实现(演示程序)
2014-03-16
AssimpViewer浏览模型软件
2014-03-13
蒙皮动画的实现(演示程序)
2014-03-07
利用GPGPU方法将大量数据通过纹理传输至GPU进行计算
2014-02-19
用OpenGL4.x绘制三角形图元
2014-02-19
基于Qt和OpenGL4.x的框架
2014-02-08
Irrlicht使用着色器渲染模型(演示程序+源代码)
2013-11-29
Irrlicht实现水波特效(演示程序+源代码)
2013-11-26
Irrlicht实现粒子系统(演示程序+源代码)
2013-11-26
Irrlicht之载入irr文件和自定义场景节点(演示程序+源代码)
2013-11-22
IrrEdit编辑场景所用的资源
2013-11-22
Irrlicht光照测试(演示程序+源代码)
2013-11-18
Irrlicht添加对中文的支持(源代码+演示程序)
2013-11-11
Irrlicht创建游戏GUI界面(演示程序+源代码)
2013-11-10
Irrlicht载入网格文件(演示程序+源代码)
2013-11-08
反向运动学演示程序(含核心代码)
2013-11-02
骨骼动画演示程序
2013-10-24
QtOpenGL以及Graphics-View框架整合的例子(演示程序+源代码)
2013-09-25
QtOpenGL以及Graphics-View框架整合的例子
2013-09-25
基于Qt和GLSL的着色器例子(演示程序+源代码)
2013-08-25
基于Qt和GLSL的着色器例子(演示程序)
2013-08-25
OpenGL光照测试(源代码+演示程序)
2013-08-07
OpenGL光照测试Revision2(演示程序)
2013-08-07
OpenGL光照测试Revision(演示程序)
2013-08-05
使用Qt和OpenGL实现的光照测试
2013-08-04
用Qt和OpenGL制作的颜色立方体例子(演示程序+源代码)
2013-07-16
用Qt和OpenGL制作的颜色立方体例子(演示程序)
2013-07-16
用Qt动画框架设计飞入-消失特效(源代码+演示程序)
2013-05-08
用Qt动画框架设计飞入-消失特效(演示程序)
2013-05-08
人工智能算法演示(演示程序+源代码)
2013-04-06
人工智能算法演示(演示程序)
2013-04-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人