-
2009-07-31
FireFox浏览图片页面巨慢的一种解决方法 - [经常忘记的正业]

本人一直是FireFox的忠实用户,自从升级到FireFox3.0以来使用一切正常,不过有天突然发现打开包含很多图片的网页时速度非常慢,滚动页面CPU更是占用100%,几乎无法浏览。用尽各种方法,甚至升级到了3.5版本但问题依旧。难道这就是FireFox的BUG?
无意间想到了桌面分辨率的颜色,几天前为了玩真侍魂将桌面颜色改为了16位但忘了改回来,改为32位后一切正常了,FireFox非常流畅了。
-
2009-04-08
OpenGL 3 & DirectX 11: The War Is Over(转载) - [经常忘记的正业]
(图片来源:www.cnblogs.com)
原文出处:OpenGL 3 & DirectX 11: The War Is Over
现今在 DirectX 与 OpenGL 皆已相当普及的年代里,我们似乎也逐渐淡忘了两者从前的那段江湖恩怨。在着名硬体网站 Tom’s Hardware 的这篇专栏文章里,作者带领我们重新回顾这场「绘图 API 战争」中的起伏转折,以及 OpenGL 3 与 DirectX 11 的未来展望,是篇值得仔细阅读的好文章。
「DirectX 最杀!很强很邪恶的微软帝国万岁!」
「想跨平台吗?OpenGL 才是唯一的光明道路!」
「我是初学者,应该要选择 DirectX 或 OpenGL?」
「我想做出一款超棒超好玩的游戏,要用 DirectX 还是 OpenGL 比较好?」身为游戏程式设计者,如果你有定期浏览国外各大程式论坛的习惯,应该会对以上这些问题感到非常亲切、熟悉,而且可能还会有些反感吧?在游戏程式设计相关领域的讨论区里,最常见的万年讨论串非「DirectX 与 OpenGL 的比较」莫属。DirectX 与 OpenGL 双方各有死忠的支持者阵营,只要在网路上里提出类似以上叙述的问题,往往会引来双方拥护者激烈的对抗与辩论;如果又不小心触动了某些资深程式设计者的「逆鳞」,就更加会战到天荒地老无以復加。
在过去的短短几年之内,我们亲身经歷了消费性 3D 显示卡市场的爆炸性成长。从以前只有硬派玩家会花大钱购买的「3D 加速卡」,到现在几乎已成为标准配备的「3D 显示卡」,电脑绘图硬体不仅成功地打入了一般消费者的市场中,其性能也获得革命性的突破,目前 GPU 的电晶体数量甚至已经超越了 CPU。时至今日,DirectX 与 OpenGL 在电脑绘图与游戏业界中的地位,究竟是处于分庭抗礼的情势,或者已经分出了胜负?且让我细说从头。
这场由 Microsoft(简称为 MS)与 Silicon Graphics(简 称为 SGI)公司相互交锋的绘图 API 战争,已经持续了十年之久。当年 DirectX 初试啼声之时,MS 挟其庞大的企业资源以及 Windows 作业系统的市佔率,正摩拳擦掌准备倾全力推行自家设计的绘图 API 标准。而相较之下,虽然 SGI 的资源比较弱势,但是行之有年的 OpenGL,早已佔据了电脑绘图界的王者地位而无可动摇;同时,OpenGL 也得到最强而有力的同盟军 John Carmack 的支持背书。由于当时使用 OpenGL 开发的 Quake Engine 所达到的惊人绘图效果,因此使得所有绘图显示卡的制造商,都必须提供完整的驱动程式支援 OpenGL 标准,才能够符合游戏开发者与游戏玩家对于显示卡硬体的期望。
SGI 的 OpenGL 是当时专业绘图市场中的龙头老大,佔有极大的优势,而与此同时 MS 只能够一切从零出发。要开发出既好用且功能强大的绘图 API,学习曲线可说是相当的严峻;在早期的 DirectX 版本中,很多程式设计者都无法适应那种与 OpenGL 全然不同的复杂程式概念,因此许多人都对于 DirectX 不屑一顾,并不看好它的未来发展。但是 MS 并没有轻言放弃,随着每次释出的全新版本,DirectX 正一步步逐渐跟上 OpenGL 的脚步。
在双方开战初期,OpenGL 拥有非常显着的有利优势,然而整场战役的转捩点,发生于 2001 年 MS 释出的 DirectX 8 之中。 这是首次 DirectX 的 API 不再仅止于拷贝 SGI 的规格标准;MS 在这次 DirectX 的全新版本中,引入了对于整个电脑绘图界来说极为重要的创新与变革:Vertex Shader 以及 Pixel Shader。顶点着色器与像素着色器的诞生,为绘图程式开发者们开拓了一条前所未见而且闪闪动人的星光大道。
相较之下,当时 SGI 的主要收益来源是非常昂贵的 3D 绘图工作站,他们没能预期到 3D 绘图显示卡市场的惊人需求爆发,而 ATI 与 Nvidia 这两间新兴的显示卡厂商,又竟然能以相当低廉的价格,将绘图显示卡打入游戏玩家的市场。另一方面,OpenGL 规格标准的发展,也受到各软硬体厂商之间的利益冲突因素牵连而迟迟无法达成共识。而在 MS 这方,却仅仅与 ATI 以及 Nvidia 两间公司合作制订 DirectX 的 API 规格,并且拥有最终的关键裁量权,因此能够相当顺利且迅速地持续发展。
在彼消此长的情况下,当 DirectX 9 推出后,更是成功地获得了一场决定性的胜利。于是,有许多软体与 游戏的开发者,决定开始使用 DirectX 或者同时提供两者的支援;只有 John Carmack 以及有跨平台需求的开发者,仍然对于 OpenGL 忠心耿耿,但是他们的阵营已经比从前衰弱许多。当然,OpenGL 阵营手上仍然握有逆转命运的契机。于是在二年前,OpenGL ARB 组织终于将 OpenGL 的开发权交付给了 Khronos 集团,将一切的希望都寄託在他们的身上。经过了二年的漫长等待后,在今年八月的 SIGGRAPH 研讨会中,Khronos 终于发表了万众瞩目的 OpenGL 3,所有 OpenGL 阵营的支持者莫不期待能够藉此扳回一成。然而,事情并没有如原先计画般的顺利。
将时序拉回 2002 年,此时 OpenGL 正逐渐失去电脑绘图界的领先地位。MS 的 DirectX 9 提出了全新的着色器 (Shader) 绘图功能以及高阶着色语言 (HLSL),而 OpenGL 阵营却拿不出可以相比拟的功能。在 Shader 绘图架构问世之后,显示卡硬体很难再依循着传统的绘图管线架构生产制造,于是为了弥补现有 OpenGL 不足之处,各家显示卡厂商开始各自扩充原有的 OpenGL 规格,自订出一套自己专属的延伸绘图 API。
正当 OpenGL 阵营陷入一片混乱之时,3DLabs 这间公司瞭解到 OpenGL 亟需迅速而彻底的变革,才能够跟得上显示卡硬体一日千里的发展脚步,于是当仁不让地提出一项拥有许多重大改革项目的 OpenGL 重整计画。首先,他们为 OpenGL 加入了高阶着色语言 GLSL,接着为了使 OpenGL 得到良好的效能,必须将 API 进行全面性的整理修改;在 OpenGL 2.0 Pure 的核心规格里,他们计画删除那些过时以及多余的功能特徵,只留下最符合现今硬体主流架构的功能,使开发者能够慢慢地由老旧的 OpenGL 1.x 版本,转移到全新的 OpenGL 2.0 版本。
然而很遗憾地,经过 OpenGL ARB 组织的冗长讨论后,这项周全的改善计画被回绝了。在最终释出的 OpenGL 2.0 里,仅仅加入了对于 GLSL 的支援, 而 3DLabs 所提案的其他功能全都随风而逝,导致 OpenGL 2.0 的版本仍然远落后于 DirectX 所提供的功能。好不容易到了 2005 年时,OpenGL 终于赶上了 DirectX 在三年前所释出的 API 功能。此时各家显示卡厂商与软体开发者,都同意事态不能够再继续这样发展下去,否则 OpenGL 将会逐渐失去地位而被人遗忘。最后,OpenGL ARB 终于在 2006 年时,将接力棒交到了 Khronos 集团手上。
Khronos 以过去管理 OpenGL ES 的高效率与负责态度着称,在接手 OpenGL 的开发后,他们很快地建立起对外的沟通管道,并且对于 OpenGL 的未来发展与多方厂商进行周详的讨论,最后提出了两项 OpenGL 发展计画的里程碑:Longs Peak 与 Mount Evans。 首先,在第一个开发里程碑 Longs Peak 中,他们打算删除那些已经过时的 API,使 OpenGL 能够集中在一组比较先进的功能组之中,并且提供与 Shader Model 2 相同等级的功能;而第二个里程碑 Mount Evans,则期望能够加入全新的 API,并且提供与 Shader Model 4 相同等级的功能。
时程很紧迫,需要完成的项目非常多,刚开始的开发状况仍称得上是一切顺利,没想到自 2007 年年末开始,Khronos 就不再公布任何关于 OpenGL 新版的开发进度消息,突然间由开诚布公的沟通,一瞬间转变为完全封闭的态度。直到今年八月 SIGGRAPH 的研讨会里,OpenGL 3 总算是千唿万唤始出来。但是在惊喜之后,则是失望、不满以及愤怒的情绪,如同洩洪般在网路讨论区里漫天盖地而来。
But while some people were expecting a pleasant surprise, Khronos had a serious disillusionment in store for fans of OpenGL.
这些强烈的负面回应,不只是因为 OpenGL 3 比原先预定的时程延后了将近一年的时间才发佈,同时也因为大多数在 Longs Peak 中所承诺的新功能也完全地被捨弃了。检视最终公布的成果,OpenGL 3 看起来简直就像是 OpenGL 2.2 版本一样,只不过是个「增进性的更新」(incremental update) 而已,API 并没有真正地产生改变。OpenGL 3 所提供的新功能,也与 DirectX 10 非常相似。
根据 Carmack 的说法,OpenGL 3 标准未能达到预期成果的主要原因,在于某些 CAD 软体的开发者并不满意 Longs Peak 中制订的规格。这些软体厂商,害怕相容性的问题会使得他们的应用程式某些比较老旧的功能失效。深入参与研发程序的 Nvidia 公司 Lichtenbelt 也说:「我们在应该移除哪些功能的议题上,遭遇到意见不一致的情势,主要是因为不同的市场需求所致。我们发现我们无法做出一个满足所有人需求的 API。」
回过头来看看另一方的 DirectX 阵营。在 2006 年发佈的 DirectX 10 里,MS 对 DirectX 整体做出了史上最彻头彻尾的修改。近年来,传统的 API 绘图架构已经快要跟不上显示卡硬体的发展脚步,因此 DirectX 10 的远大目标,就是要为未来的硬体架构提供一项稳固的根基建设。然而,DirectX 10 并没有如预期般获得游戏玩家与开发者的喜爱及关注。
对于游戏玩家来说,即使使用了 DirectX 10 可能也感受不到明显的改变;更糟的是,新的 API 只为 Vista 以上的系统撰写,正好为敌视 MS 的使用者找了一项非常充足的开战理由。而对于游戏开发者来说,在 Windows XP 仍然佔据绝大多数消费者市场的情况下,DirectX 10 与 Vista 作业系统绑在一起,不仅转换成本极高而且也发挥不了显着的市场作用,因此多数的游戏专案,仍然选择坚守着传统的 DirectX 9 标准。
(图片来源:www.socgame.com.tw)
在最近刚揭露初步讯息的 DirectX 11 中,公布了不少值得游戏开发者引颈期盼的全新功能。DirectX 11 奠基于 10 之上,也可以称为是一次增进性的版本更新;在 DirectX 11 正式问市以后,许多开发者应该会选择略过 DirectX 10,直接使用 DirectX 11 开发最新的游戏。而最棒的是,DirectX 11 不仅能够向下相容于 DirectX 10 的显示卡,同时也能够在 Windows 7 与 Vista 上执行!
在 DirectX 11 的许多新功能中,我个人认为最重要的莫过于多执行绪绘图功能的支援。再者,在 GPU 的专用开发语言上,相较于 Nvidia 大力推行的 CUDA,DirectX 11 的 Compute Shader 优势在于能够同时支援 ATI 以及 Nvidia 的显示卡,甚至是未来的 Intel Larrabee 显示硬体,而且也与 DirectX 的功能具备有更佳的整合能力。另外像是 Tessellation 阶段的导入、Texture Compression 效果的改善,以及物件导向化的 Shader Model 5 等等,也都是对于电脑绘图与游戏开发领域非常具有吸引力的功能特点。
许多人对于 OpenGL 失望之处,不仅是 API 本身的能力,同时也包含被处理的过程。在 OpenGL 3 里,仅仅勉强跟上了 DirectX 10 的脚步,而在几乎同一时间里,MS 已经公布了次世代 DirectX 11 版本的细节。虽然相较于 DirectX 10,最新的 DirectX 11 并没有什么革命性的创新之处,但是自 DirectX 10 推出以来,MS 已歷经了二年的困难处境,所以现在 MS 得以在稳健的基础上,回收当时花费庞大心力重建 API 的功夫。
原文标题所下的「The War Is Over」,已经很明确地表达了作者对于 DirectX 与 OpenGL 之战的心得感想。但是在文章最后,即便未来的可能性相当难以预期,作者仍希望在后续 OpenGL 3 的更新内容里,能够证明他所做出的结论是错误的。就我自己的感想来说,OpenGL 仍然是跨平台绘图应用程式的唯一选择,我也不希望 OpenGL 从此衰落而一蹶不振,演变成 DirectX 独占鳌头的局面。唯有正向的竞争压力,才能够加速促进绘图 API 以及绘图显示硬体的发展。
在瞭解了 DirectX 与 OpenGL 两强相争的歷史渊源以及来龙去脉之后,或许有些读者还是会想问:「到底应该要选择学习 DirectX 或者 OpenGL?」对于想进入游戏程式设计领域的初学者来说,我的建议是:两者都需要学习。DirectX 与 OpenGL 具有不同的设计理念与实作技巧,也拥有各自独具的优势与弱点;在游戏业界中,两方都有广泛的使用族群,并没有特别偏向某一方,所以两者皆不可偏废。
如果非要从两者中挑一个入门,那么我会建议由 OpenGL 开始学习电脑绘图理论与实作技术。因为学习 DirectX 的初学者,往往很容易被视窗程式的建立以及 COM 元件的架构所迷惑,反而会模煳了学习电脑绘图程式设计的焦点。若是使用 OpenGL,便可以利用 GLUT 或其他的辅助函式库,大幅简化与平台相关的视窗程式建立细节,使学习者能够专注在电脑绘图理论与程式实作技术的领域中。当然如果你在进入电脑绘图领域之 前,已经相当熟悉 Windows 视窗程式设计,那么选择 DirectX 做为出发点也同样是没问题的。
在学会了 DirectX 与 OpenGL 之后,就可以把它们当成「个人工具箱」里的两把利器:当我想要学习最新的 Shader 程式设计,将显示卡性能发挥到极限时,我会拿出 DirectX 这把屠龙刀;而当我有个程式概念想要快速完成雏形试做时,我就会挥舞 OpenGL 倚天剑。不管是 DirectX 还是 OpenGL,随你自由来去,岂不乐乎?
-
2009-03-04
D3D 渲染状态 API 调用开销表 - [经常忘记的正业]
在DXSDK里找到的,这个是一般情况下的调用开销,计算单位是 CPU Cycles,可以依据这个构建一张静态渲染状态开销表 。
API Call
Average number of Cycles
SetVertexDeclaration 6500 - 11250 SetFVF 6400 - 11200 SetVertexShader 3000 - 12100 SetPixelShader 6300 - 7000 SPECULARENABLE 1900 - 11200 SetRenderTarget 6000 - 6250 SetPixelShaderConstant (1 Constant) 1500 - 9000 NORMALIZENORMALS 2200 - 8100 LightEnable 1300 - 9000 SetStreamSource 3700 - 5800 LIGHTING 1700 - 7500 DIFFUSEMATERIALSOURCE 900 - 8300 AMBIENTMATERIALSOURCE 900 - 8200 COLORVERTEX 800 - 7800 SetLight 2200 - 5100 SetTransform 3200 - 3750 SetIndices 900 - 5600 AMBIENT 1150 - 4800 SetTexture 2500 - 3100 SPECULARMATERIALSOURCE 900 - 4600 EMISSIVEMATERIALSOURCE 900 - 4500 SetMaterial 1000 - 3700 ZENABLE 700 - 3900 WRAP0 1600 - 2700 MINFILTER 1700 - 2500 MAGFILTER 1700 - 2400 SetVertexShaderConstant (1 Constant) 1000 - 2700 COLOROP 1500 - 2100 COLORARG2 1300 - 2000 COLORARG1 1300 - 1980 CULLMODE 500 - 2570 CLIPPING 500 - 2550 DrawIndexedPrimitive 1200 - 1400 ADDRESSV 1090 - 1500 ADDRESSU 1070 - 1500 DrawPrimitive 1050 - 1150 SRGBTEXTURE 150 - 1500 STENCILMASK 570 - 700 STENCILZFAIL 500 - 800 STENCILREF 550 - 700 ALPHABLENDENABLE 550 - 700 STENCILFUNC 560 - 680 STENCILWRITEMASK 520 - 700 STENCILFAIL 500 - 750 ZFUNC 510 - 700 ZWRITEENABLE 520 - 680 STENCILENABLE 540 - 650 STENCILPASS 560 - 630 SRCBLEND 500 - 685 TWOSIDEDSTENCILMODE 450 - 590 ALPHATESTENABLE 470 - 525 ALPHAREF 460 - 530 ALPHAFUNC 450 - 540 DESTBLEND 475 - 510 COLORWRITEENABLE 465 - 515 CCW_STENCILFAIL 340 - 560 CCW_STENCILPASS 340 - 545 CCW_STENCILZFAIL 330 - 495 SCISSORTESTENABLE 375 - 440 CCW_STENCILFUNC 250 - 480 SetScissorRect 150 - 340 -
2009-02-24
CString和std::string的互相转换 - [经常忘记的正业]
俗话说,书到用时方恨少,如果没有用到,可能真的想不起来。
CString->std::string 举例如下:
CString strMfc=“test“;
std::string strStl;
strStl=strMfc.GetBuffer(0);
std::string->CString 举例如下:
CString strMfc;
std::string strStl=“test“;
strMfc=strStl.c_str(); -
2008-07-25
visual studio中全文搜索失灵问题之解决 - [经常忘记的正业]
在VC中全文搜索失灵,始终报告错误:
No files were found to look in. Find was stopped in progress.
不妨按一下Ctrl + Scroll Lock再试试,是不是柳暗花明又一村呢?(适用于Visual Studio 2005)
-
2008-03-05
window下MPUI与SMPlayer字幕乱码问题之补遗 - [经常忘记的正业]
本站2007年9月16日的文章window下MPUI与SMPlayer字幕乱码问题之解决一文中解决了SMPlayer播放字幕乱码问题,可是在我近日的使用中,发现还是存在潜在的问题,有些影片播放时识别不出字幕文件。用VIM打开字幕文件,发现是乱码,于是再用Uedit32打开文件,发现可以正常识别,于是另存该文件为utf8格式的文本文件。启动SMPlayer,在字幕设置中设置字幕编码为UTF8,于是就可以正常播放字幕了。 -
2007-12-08
未来游戏设计的十大技术挑战(ZT) - [经常忘记的正业]
本文转载自柠檬网,原文见http://www.lemoons.com/Wiki/Topic.asp?ID=1306
courtesy IBM,图片:PS3的Cell处理器
问题:如果电脑的运算速度跟不上游戏指令,画面会跳帧,彻底毁掉玩家的游戏体验。计算能力的限制始终是游戏制作中最令人头痛的问题。此外,它跟本文提到的其他问题都有关系,从实现人工智能到创造真实的物理引擎。
现状:多核技术同时使用多个处理器或者图 形处理单元来提高计算能力,可以加速游戏的运行。但是现在的程序员还没有掌握多核处理器上的编程技术——使他们无法有效地利用这项技术。(PS3的包含8 个3.2GHz处理器,可惜现在很少有程序员掌握了相应的编程技术)传统的程序设计思维是如此的根深蒂固,程序员还是习惯用会计师的语言(啊!这个雨的特 效消耗资源太高啦)来表述问题,并未掌握已有的工具。
未来:摩尔定律——芯片上集成的晶体管数 目每两年翻一番——意味着未来将会有更强的计算能力。(图形处理芯片巨人Nvidia宣称一直以超过摩尔定律的速度更新它的芯片,在不到一年的时间内使芯 片的处理能力翻倍)但是程序员的雄心总是走在硬件发展的前面,正如一位设计师指出的:“我们的能力越强,获得的成功越大,我们期望也越大” 对更强计算能力的渴求将永远伴随着CPU和GPU处理能力的快速发展。
2. 水
Courtesy Sony,图片:龙潭虎穴(Lair)中,真实的水面效果让玩家体验到身临其境的驭龙飞行效果。水特效是一个主要的计算难题
描绘出流动的海水
问题:数学方法已经能奠定了计算最精细的 液体流动的基础,比如一毫米见方以内的水面特效。游戏必须通过所有这些细节组合成整个海洋的效果。“不到一年以前,硬件的处理能力还不足以让我们动态生成 游戏中水的运动效果,”Lee Bamber(李.巴姆博)说,他是游戏创造者(The Game Creators)公司的创始人,一位有20年从业经验的程序员。
现状:“黏度是关键,”罗恩.法第奎 (Ron Fedkiw)表示。罗恩是斯坦福大学计算机科学系的助理教授(associate professor),他致力于电影特效的研究,像星球大战前传三:西斯的复仇,以及现在的变形金刚。现在他正在与工业光魔公司合作。“高黏度”——类似 于固体之间的摩擦——“比较容易表现,黏度稍微降低,表现会变难;而对于水,难度更大。”数学模型能够描述水的运动,法第奎承认,但是只有超级计算机才能 满足其运算需要。
未来:游戏开发者正在试验粒子系统,一种 由一组颗粒组合而成的系统,所有粒子都以特定的规则对外界做出反应。然后,随着处理器性能的慢慢地增强和算法的改进,使用湍流模型——计算物理学中模糊预 测(BallPark Estimate)的等价模型——能够绘制出更加真实的液体飞溅、气泡和波浪效果。——J. W.
......
-
2007-10-17
转帖《N款适合编程的字体(区分0oO1iIlL2zZ)》 - [经常忘记的正业]
0oO 1lIiL 2zZ……能认出这是什么字母或数字吗?很多人在工作中都遇到过数字0和字母O识别错误的情况。有没有好一点的字体呢?上图就是比较好的3种字体显示效果。一、适合编程好字体的标准1. 所有字符等宽;
2. 简洁、清晰、规范的字符形体;
3. 支持ASCII码为128以上的扩展字符集;
4. 空白字符(ASCII: 0×20)与其他字符等宽;
5. ‘1′、’l'和’i'等三个字符易于区分;
6. ‘0′、’o'和’O'等三个字符易于区分;
7. 双引号、单引号的前后部分易于区分,最好是镜像对称的;
8. 清晰的标点符号外形,尤其是大括符、圆括符和方括符。 -
2007-09-26
window下MPUI与SMPlayer字幕乱码问题之解决 - [经常忘记的正业]
对于在低配置笔记本电脑上看电影的同学们来说,Mplayer的存在无疑是一大福音,但其命令行运行方式对操作的要求比较高。好在MPUI与 SMPlayer的存在解决了这个问题,SMPlayer 使用 Qt 3.3.3 开发,具有十分完备的功能,不管是应付一般的视频、VCD、或者是 DVD 之类的播放,还是更高一级的控制都没有问题。同样MPUI 是另一个Mplayer的外壳,它有类似 Media player classic 的界面,虽然功能较弱,但都有自动载入字幕的功能。遗憾的是经常载入的字幕是乱码!这无疑是做好的蛋汤里飞入了苍蝇,让人很不爽。
最近上网研究了一下,找了一下相关资料,完美解决了这个问题:
1 启动SMPlayer,选择菜单"Options"->"Preferences" ->"Subtitles"设置"Default subtitle encoding"为”Simplified Chinese charset (CP936)“。在你的windows系统font文件夹查找”simhei“字体文件,将其拷入Mplayer目录的fonts目录下,进入” Font“页面,指定TTF字体为该文件,一切OK了。
2 对于MPUI,修改MPUI.ini文件,加入一行Params=-font c:/windows/fonts/SIMHEI.TTF -subcp cp936
-
2007-03-27
firefox扩展的备份 - [经常忘记的正业]
最近公司准备换新机器了,一直用的很爽的FireFox也要重新安装了,可是许多收藏夹以及插件扩展怎么办,今天从网上看来一个办法,可以完美解决这个问题。
只要备份C:\Documents and Settings\你的用户名\Application Data\Mozilla这个文件夹,重新安装firefox后直接复制过来覆盖就行了。











