28卷二十八

目录#

太宗平内难

太宗易太子

太宗平突厥

唐平铁勒

唐平西突厥

太宗讨龟兹

太宗平高昌

太宗平吐谷浑

附录: 隋朝皇帝世系表

唐朝皇帝世系表

返回总目录

太宗平内难#

【内容提要】#

《太宗平内难》叙述了唐朝初年唐太宗李世民与他的哥哥太子李建成、齐王李元吉之间争夺皇位的斗争过程。

隋炀帝杨广大业十三年(617年),李渊在晋阳(今山西太原西南)起兵,攻占都城长安(今陕西西安);次年(618年),称帝,定国号为唐,年号为武德,他就是唐高祖。

唐高祖李渊与元配夫人窦氏一共生了四个儿子:长子李建成、次子李世民、三子李玄霸和四子李元吉。除了李玄霸早逝之外,其余三兄弟都参加了晋阳起兵。李渊建唐称帝以后,立李建成为太子,封李世民为秦王,李元吉为齐王。

李世民智勇兼备,才能出众,在晋阳起兵、建立唐朝和统一全国的战争中,东征西讨,英勇善战,立下了赫赫战功,威望很高,无形中对他的哥哥李建成造成了很大的压力。李世民手下云集了一批猛将谋士,形成秦府集团,这更增加了李建成的不安。于是他便合齐王李元吉,结成太子东宫集团,一起对付李世民。由于唐高祖处理不当,造成了兄弟之间的矛盾越来越深。

在双方展开明争暗斗的过程中,彼此还都想方设法地采取各种手段削弱对手,壮大自己。在后宫,李建成利用自己的太子地位,极力讨好巴结后宫妃嫔,得到了她们的支持。李世民的妃子长孙氏也经常出入内宫,千方百计地拉拢贿赂后宫妃嫔,从中寻求支持力量。在外廷,支持太子和秦王的大臣也分成两派。宰相裴寂公开袒护太子,萧瑀(yǔ)、陈叔达则同情和倾向于李世民。在地方上寻找支持力量,发展和培植私人势力。山东、河北一带成为李建成在地方上的重要支持力量。李世民则在河南一带发展和争取地方势力。在双方的较量逐渐白热化的过程中,彼此还都采用收买、拉拢和排挤的手段,挖对方的墙角。太子李建成曾以重金收买李世民的铁杆心腹尉迟敬德和段志玄,但没有成功;李世民则成功策反东宫将领常何和太子率更丞王晊(zhì)。

唐高祖武德九年(626年)六月,突厥入侵。李建成推荐李元吉率军出征,同时建议征调秦府精锐猛将勇士,拨归元吉指挥。准备在为元吉饯行时,刺杀李世民。太子率更丞王晊将这一重要情报密告李世民。李世民马上召集长孙无忌、房玄龄、杜如晦、尉迟敬德等人商议,决定先发制人,诛杀李建成和李元吉。

六月三日,秦王李世民忽然秘密入朝,揭发太子李建成与齐王李元吉与后宫妃嫔张婕妤、尹德妃关系暧昧,还几次想谋害他。李渊觉得这件事情关系重大,决定第二天上朝亲自审理此事。

当天夜里,李世民调兵遣将,作好了部署。他亲自率领长孙无忌、尉迟敬德、侯君集、张公瑾等人,埋伏在上朝时的必经之路宫城北门玄武门。第二天,当李建成和李元吉两人并排骑着马,进入玄武门时,李世民指挥伏兵忽然杀出,一箭射死李建成,李元吉则被尉迟敬德射死。

东宫、齐府将士闻变,赶到玄武门救援。这时,尉迟敬德提着李建成和李元吉的人头出来示众,东宫、齐府将士眼看大势已去,就一哄而散。之后,尉迟敬德又迅速入宫控制了唐高祖。这就是历史上著名的玄武门之变。

玄武门之变后第三天,唐高祖李渊就宣布立秦王李世民为太子。不久,李渊宣告正式退位,李世民即位,改元“贞观”,他就是历史上著名的唐太宗。

玄武门之变是太子李建成和秦王李世民之间为了争夺皇位而展开的一场激烈的斗争。政变的结果是李世民取得了胜利,登上了皇位。他在位期间,励精图治,实行轻徭薄赋、与民休息的政策,出现了历史上难得的“贞观之治”大好局面。

【原文】#

唐高祖武德五年[1]。上之起兵晋阳也,皆秦王世民之谋[2]。上谓世民曰:“若事成,则天下皆汝所致,当以汝为太子[3]。”世民拜且辞[4]。及为唐王,将佐亦请以世民为世子,上将立之,世民固辞而止[5]。太子建成性宽简,喜酒色游畋,齐王元吉多过失,皆无宠于上[6]。世民功名日盛,上常有意以代建成[7]。建成内不自安,乃与元吉协谋,共倾世民,各引树党友[8]。

【注文】#

[1]唐(618—907年):朝代名。李渊于公元618年建立,定都长安(今陕西西安)。690年,武则天改“唐”为“周”,迁都洛阳,史称武周。705年,唐中宗李显复辟,恢复大唐国号,还都长安。755年,爆发“安史之乱”,从此日渐衰落。至907年,朱温篡唐建梁,唐朝灭亡,共290年。唐朝在政治、经济、文化、外交等各方面都取得了辉煌的成就,是当时世界上最强大的国家之一。  唐高祖,即唐朝开国皇帝李渊(566—635年),字叔德,陇西成纪(今甘肃静宁西南)人,迁陇西狄道(今甘肃临洮),又说是赵郡(今河北隆尧东)人。出身于关陇贵族,隋末天下大乱时,乘势从太原起兵,攻占长安。618年,称帝,改国号唐,定都长安,不久之后便统一了全国。玄武门之变后,退位为太上皇。  武德:唐高祖的年号,也是唐朝的第一个年号,自武德元年(618年)五月至武德九年(626年)十二月使用。

[2]兵:军队。  晋阳:地名,今山西太原西南。  秦王:古代亲王的称号。  世民:即唐朝第二位皇帝李世民(599—649年)。公元618年,李渊建立唐朝,并立世子李建成为太子。唐高祖武德九年(626年),李世民通过发动玄武门之变,登上皇位。在其统治时期开创了历史上“贞观之治”的大好局面,649年,逝世于长安含风殿,享年50岁,谥号为“文皇帝”。  谋:计划,计策,主意。

[3]太子:古代君主的儿子中被预定为继承君位的人。

[4]拜:古代表示敬意的一种礼节。两手合于胸前,头低到手。

[5]将(jiàng):将领。  佐:处于辅助地位的人。  世子:诸侯贵族指定的继承人,大多数情况下是嫡长子。

[6]建成(589—626年):唐高祖李渊长子李建成,小名毗沙门。参加了李渊领导的晋阳起兵。李渊即位后,被立为太子,曾率军讨平窦建德部将刘黑闼(tà)叛乱。后与其弟李元吉联合,与秦王李世民展开激烈的争夺皇位的斗争。在李世民发动的玄武门之变中,被杀。李世民继位后,追封他为息王,谥“隐”,史称“隐太子”。  宽简:不拘小节。  畋(tián):打猎。  齐王:即唐高祖李渊第四子李元吉(603—626年),名劼(jié),小字三胡。参加了李渊领导的晋阳起兵。唐朝建立后,被封为齐王。后与其兄建成联合,与李世民展开激烈的争夺皇位的斗争。在“玄武门之变”中被杀,终年24岁。

[7]功名:功业和名声。  盛:表程度深。

[8]倾:推翻。  党:意见相合的人或由私人利害关系结成的团体。

【译文】#

唐高祖武德五年(622年)。当年高祖李渊在晋阳起兵,都是秦王李世民的计谋。高祖曾对李世民说:“如果大事成功,那么天下都是由你得来的,应当立你为太子。”李世民拜谢并且推辞。等到李渊做了唐王后,将领们也请求把李世民立为继承人,唐高祖准备立他,因李世民坚决推辞才算了。太子李建成秉性散漫不拘小节,喜好酒色和游猎玩乐,齐王李元吉过失较多,因此都得不到高祖李渊的宠爱。李世民的功劳威望一天比一天大,高祖李渊曾经有意让他取代李建成为太子。李建成内心感到很不安,于是他和李元吉合谋,共同陷害李世民,他们各自拉拢、培植党羽。

【原文】#

上晚年多内宠,小王且二十人,其母竞交结诸长子以自固[1]。建成与元吉曲意事诸妃嫔,谄谀赂遗,无所不至,以求媚于上[2]。或言蒸于张婕妤、尹德妃,宫禁深秘,莫能明也[3]。是时,东宫、诸王公、妃主之家及后宫亲戚横长安中,夺人田宅,恣为非法,有司不敢诘[4]。世民居承乾殿,元吉居武德殿后院,与上台、东宫昼夜通行,无复禁限[5]。太子、二王出入上台,皆乘马携弓刀杂物,相遇如家人礼[6]。太子令、秦、齐王教与诏敕并行,有司莫知所从,唯据得之先后为定[7]。世民独不奉事诸妃嫔,诸妃嫔争誉建成、元吉而短世民[8]。

【注文】#

[1]内宠:帝王宠爱的人,指姬妾。  小王:年幼封王者。  竞:比赛,互相争胜。  交结:交往,相互勾结。  固:结实,牢靠。

[2]曲意:委曲己意而奉承别人。  妃嫔(pín):帝王的妾。妃,位次于后;嫔,位又次于妃。  谄(chǎn)谀(yú):奉承、巴结的意思。  赂(lù)遗(wèi):以财物赠送或买通他人。赂,贿赂;遗,赠送。  无所不至:没有达不到的地方。凡能做的都做到了(用于坏事)。至,到。语出《论语·阳货》:“既得之,患失之,苟患失之,无所不至矣。”  求媚:讨好。

[3]蒸:指与母辈淫乱。  张婕(jié)妤(yú):唐高祖李渊晚年最为宠幸的妃嫔之一。生卒年不详。传说与太子李建成和齐王李元吉相勾结以巩固自己的地位。  尹德妃:唐高祖李渊晚年最为宠幸的嫔妃之一。生卒年不详。生酆(fēng)王李元亨。传说与太子李建成与齐王李元吉相勾结以巩固自己的地位。婕妤、德妃,都是古代宫中妃嫔的称号。唐制规定:贵妃、淑妃、贤妃、德妃、惠妃为夫人;昭仪、昭容、昭媛、修仪、修容、修媛、充仪、充容、充媛为九嫔(以上各一人);婕妤、美人、才人各九人,为二十七世妇;宝林、御女、采女各二十七人,为八十一御妻。  宫禁:帝王和王后居住的地方。  深秘:幽深神秘。  明:动词,分辨,区分。

20卷二十

目录#

废帝之乱

宋明帝北伐

萧道成篡宋

魏迁洛阳

萧鸾篡弑

附录: 南朝宋皇帝世系表

南朝齐皇帝世系表

北魏皇帝世系表

返回总目录

废帝之乱#

【内容提要】#

《废帝之乱》叙述了南朝宋前废帝刘子业继位后的种种昏庸残暴行径和被废杀的历史史实,以及刘彧和刘子勋争夺皇位的战争过程及结果。

464年,南朝宋昏庸无道的孝武帝刘骏因病去世,继位的太子刘子业承袭了其父的种种劣行,并且更为变本加厉:其一,毫无孝悌之心。杀其弟新安王刘子鸾,掘殷贵妃之墓,甚至还欲掘其父刘骏的景宁陵,借口“病人房间鬼多”拒绝侍奉其生母。其二,虐待屠杀诸王。扣留湘东王刘彧等诸王于宫中,变态侮辱,怒杀欲废其位的刘义恭及其四子。其三,肆杀朝臣。听信宠宦谄言,杀害戴法兴、沈庆之等重要臣僚。其四,淫乱后宫。与其已为人妻的姐姐山阴公主刘楚玉秽乱后宫,极度宠幸其姑母新蔡公主并封为贵嫔,组织后宫的妃嫔、公主与身边的侍卫淫乱。这些恶行导致朝政混乱,人心思变。

前抚军咨议参军何迈因刘子业夺妻之恨,欲乘刘子业外出之时发动政变,迎立晋安王刘子勋,事泄被诛。民间谣传“湘中有天子气”,因此湘东王刘彧成为最受刘子业猜忌的藩王,刘彧为保住性命,暗中拉拢宫廷侍卫和刘子业的亲信寿寂之、柳世光等人,同时派遣自己的亲信钱兰生潜伏于刘子业身边,密谋废杀刘子业后继位称帝。寿寂之、柳世光等人乘刘子业大摆宴席饮酒酣歌之时袭杀了他,并救出囚禁中的刘彧,拥其继位,是为宋明帝。

刘彧等人在朝廷内密谋和行动的同时,刘骏第三子、刘子业的弟弟刘子勋也在其臣僚的劝说下准备起兵废立。正好刘子业借口刘子勋是何迈政变的背后主谋,派遣朱景云持毒药前去赐杀他,朱景云遣信使把情况告诉了江州长史邓琬,邓琬等人拥戴刘子勋,随即起兵。

465年,湘东王刘彧登上皇位后,封刘子勋为车骑将军、开府仪同三司,刘子勋拒不接受,于次年正月也在寻阳登基称帝,备置百官。刘宋王朝至此出现了两个政权:即以建康为中心的刘彧和以寻阳为中心的刘子勋。寻阳政权曾一度被视为正统,得到薛安都等各方镇将的响应和支持,甚至寻阳军几乎逼近建康城,刘彧政权岌岌可危。但随着刘彧起用沈攸之、吴喜、张兴世等将领后,战局发生急剧逆转;而此时寻阳政权方面,因邓琬、袁等人缺乏军事才能,且与武将关系不和,导致了军心离叛。经过激战,刘彧军大胜,刘子勋及其母被斩杀。灭掉刘子勋的寻阳政权后,刘彧又杀掉其兄孝武帝刘骏的二十八个儿子。

经过艰苦的战争,虽然残暴失伦的皇帝刘子业被废杀,但刘宋混乱不堪的政治局面并没有实质性的改变。继位的新皇帝刘彧,仍然施行残暴无度的统治政策,并且肆意挥霍、屠杀宗室,导致民不聊生,天怒人怨,南朝宋政权正一步步走向灭亡。

【原文】#

宋[孝]武帝大明二年[1]。初,上在江州,山阴戴法兴、戴明宝、蔡闲为典签;及即位,皆以为南台侍御史,兼中书通事舍人[2]。是岁,三典签并以初举兵预密谋,赐爵县男[3]。闲已卒,追赐之[4]。时上亲览朝政,不任大臣,而腹心耳目不得无所委寄。法兴颇知古今,素见亲待[5]。鲁郡巢尚之,人士之末,涉猎文史,为上所知,亦以为中书通事舍人[6]。凡选授、迁徙、诛赏大处分,上皆与法兴、尚之参怀,内外杂事,多委明宝,三人权重当时[7]。而法兴、明宝大纳货贿,凡所荐达,言无不行,天下辐凑,门外成市,家产并累千金[8]。

【注文】#

[1]宋:即南朝宋(420—479年),为南北朝时期南朝的第一个王朝。公元420年,宋武帝刘裕取代东晋政权而建立,定都建康(今江苏南京)。因皇族姓刘,为了与后来赵匡胤所建立的宋朝相区别,故又称为刘宋。共传八帝,历六十年。宋文帝刘义隆在位的三十年间(424—453年),励精图治,发展生产,经济有所恢复,被称为“元嘉之治”。刘宋末年,由于王室诸子争位,混战不止,帝王荒淫残暴,朝政日益腐败,国家实力从此一蹶不振。479年,宋顺帝刘準把帝位禅让给了权臣萧道成,南朝宋终被萧齐所取代。  孝武帝:即刘骏(430—464年),南朝宋第四任皇帝(453—464年)。字休龙,小字道民,刘义隆第三子,年少聪颖,长于骑射,封武陵王,历任雍州刺史、江州刺史,后讨杀刘劭即帝位。在位期间,先后将宗室刘义宣、刘铄、刘诞、刘浑、刘休茂等杀害,大大削弱刘宋势力。谥号孝武,庙号世祖。刘骏是南朝宋诸帝中较有才华的皇帝和诗人。  大明二年:大明是南朝宋孝武帝刘骏在位时期的第二个年号,即公元457年到公元464年,共计八年。大明二年即公元458年。

[2]初:当初。这是古文中追述往事的习惯用语。  江州:古州名。西晋惠帝元康元年(291年),分荆、扬二州置,治豫章(今江西南昌),其后或治柴桑(今江西九江西南),或治半洲城(今江西九江西),或治湓口城(今江西九江),东晋辖境相当于今江西、福建两省,湖北陆水以东、长江以南及湖南舂陵水中上游以东地区。其后渐小。  山阴:古县名。秦置,因在会稽山阴(北)而得名,治所在今浙江绍兴。隋改称会稽。  戴法兴(414—465年):南朝宋权臣。会稽山阴(今浙江绍兴)人。少卖葛于市,后为吏传署,好学能文,颇通古今,为孝武帝所重,为南鲁郡太守,兼中书通事舍人,多纳货贿,权重当时,前废帝刘子业时任越骑校尉,更加专权,后受阉人谗言被免官赐死。  戴明宝(生卒年不详):南朝宋臣僚。南东海丹徒(今江苏镇江丹徒区)人,历任员外散骑侍郎、给事中、南清河太守、宣威将军、南东莞太守、前军将军、晋陵太守,晋爵为侯,后曾因受贿被削官,后复起用,任安陆太守、宁朔将军、游击将军、骁骑将军、武陵内史、宣城太守等职。  蔡闲(生卒年不详):南朝宋臣僚。曾任典签。  典签:古代官职名。本为掌管文书的小吏。南朝宋齐时,为了监视出任方镇的宗室诸王和各州刺史,常由皇帝派亲信担任此职,号为签帅,作为佐属官,实握州镇全权。南朝梁以后渐废。唐代诸王府亦设典签,掌宣传书教,宋以后渐废。  侍御史:古代官职名。西汉为御史大夫属官,受命御史中丞,接受公卿奏事,举劾非法;有时受命执行办案、镇压叛乱等任务,分掌令曹、印曹、供曹、尉马曹、乘曹。魏、晋、南北朝时,曹数时有增减,但均不止五曹。  中书通事舍人:古代官职名。三国魏初设,称中书舍人,是中书省的属官,主管文书,职位低于中书侍郎。东晋至宋、齐曾改为中书通事舍人。

[3]爵:古代皇帝对贵戚功臣的一种封赐,有公、侯、伯、子、男五种爵位,后代爵称和爵位制度往往因时而异。  县男:男爵,封地为一县。品级不详。

[4]追赐:死后封赐。

[5]亲待:亲近优待。

[6]鲁郡:古郡、国名。西汉初改薛都置鲁国,治鲁县(今山东曲阜[fù]),辖境相当于今山东曲阜、滕州、泗水等地。三国魏改为郡,西晋复为国,东晋、南朝宋及北魏、东魏复为郡。北齐改名任城。隋初废,大业时及唐天宝、至德时又曾改兖州为鲁郡。  巢尚之:南朝宋大臣。鲁郡(治今山东曲阜)人,南朝宋文帝元嘉中期任始兴王刘濬侍读,涉猎文史,深受刘骏的赏识,宋孝武帝孝建初年任东海国侍郎,兼中书通事舍人。宋明帝泰始三年(467年)奉诏与淮南太守孙奉伯等编次二王法书。

[7]选授:经过选定授以官职。  迁徙:升迁官职。  处分:决策,措施。  参怀:共同商议。

[8]荐达:推荐,推举。  辐凑(còu):又称辐辏,形容人或物聚集像车辐集中于车毂一样。辐:连接车辋和车毂的直条。辏:车轮的辐聚集到中心,引申为聚集。

【译文】#

南朝宋孝武帝大明二年(458年)。当初,孝武帝担任江州刺史时,山阴人戴法兴、戴明宝、蔡闲任典签之职;等到刘骏即帝位后,把他们都任命为南台侍御史,兼任中书通事舍人。这一年,三位典签都因当初起兵参与密谋而被赐予县男之爵。当时蔡闲已经去世,追赠此爵。那时候孝武帝亲自上朝处理政务,不信任朝中的大臣,只把朝廷要事委托给自己的心腹耳目之臣。戴法兴因为熟悉古今之事而素来被孝武帝所礼遇。鲁郡巢尚之,虽然出身卑微,但是熟谙文史典故,被孝武帝所赏识,也任命为中书通事舍人。凡是选拔和调动官吏、诛杀赏罚等军国大事,孝武帝常常和戴法兴、巢尚之共同商议,而皇宫内外的杂事多委托于戴明宝处理,因此,当时他们三个人权势日渐加重。戴法兴、戴明宝大肆收受贿赂,凡是他们推荐的官员,没有不成功的,国内的士人们都聚集于他们周围,他们的家门口像市场那样热闹,他们的家产都累集达千金。

东晋、南朝都城建康示意图

【原文】#

八年夏闰五月庚申,上殂于玉烛殿[1]。是日,太子即皇帝位废帝,年十六,大赦[2]。吏部尚书蔡兴宗亲奉玺绶,太子受之,傲惰无戚容[3]。兴宗出,告人曰:“昔鲁昭不哀,叔孙知其不终[4]。家国之祸,其在此乎[5]!”

【注文】#

[1]闰:即闰月。阴历是以月球绕地球而定的历法,它按照月亮的圆缺安排大月和小月,一个月的长度约是29.5日,这样一年共354天,与阳历的一年相差11天。如果按上述规定制定历法,就会出现天时与历法不合、时序错乱颠倒的怪现象。对此,古人在天文观测的基础上,找出了“闰月”的办法,即每三年闰一个月,每五年闰两个月,每十九年闰七个月。这样每逢闰年所加的一个月,称为闰月。闰月加在某月之后,就叫闰某月。  殂(cú):死亡,去世。相当于“崩”。  玉烛殿:古代宫殿名。南朝宋孝武帝刘骏拆毁宋武帝刘裕的阴室所建。阴室是帝王生前的居室,死后保留以供阴魂出入,故称。

[2]太子:又称皇储、储君。古代君主预定的皇位继承人。周时天子及诸侯的嫡长子,或称太子,或称世子。秦汉时期,天子号称皇帝,故其嫡子称皇太子。地位仅次于皇帝本人,并且拥有自己的、类似于朝廷的东宫。此指南朝宋孝武帝刘骏嫡长子刘子业。刘子业(449—465年),南朝宋第五任皇帝(464—465年)。小字法师,孝武帝长子。孝建元年(454年)被立为太子,继位后因行为过于荒淫而被废。为了和后来的废帝刘昱相区别,称刘子业为“前废帝”,称刘昱为“后废帝”。  大赦(shè):以君主命令的方式对某个时期的特定罪犯或一般罪犯实行免除或减轻罪责或刑罚。古代帝王常在登基、更换年号、册立皇后等情况下,以施恩为名,颁布赦令,赦免犯人。

[3]吏部尚书:古代官职名。西汉尚书有常侍曹,主管丞相、御史、公卿之事。东汉改为吏部曹,末期又改为选部曹。魏晋以后,尚书省(尚书台)设吏部,置尚书等官。隋唐两代为六部之首,主管全国官吏的任免、考课、升降、调动等事务,长官为吏部尚书,副长官为侍郎,并下设吏部、司封、司勋、考功四司,历代相沿不改。清末,权归内阁。  蔡兴宗(415—472年):南朝宋大臣。济阳考城(今河南民权东北)人,年少好学,初任太子舍人,孝武帝时任侍中,敢于直谏。后历官东阳太守、吏部尚书、新昌太守、尚书右仆射,与袁粲、褚渊等同受顾命,终任于左光禄大夫。  玺(xǐ)绶(shòu):古代印玺上所系的彩色丝带。借指印玺。玺,专指帝王的大印。绶,古代印玺上所系的彩色丝带。  傲惰:懈怠傲慢。  戚容:忧伤的面容。

[4]昔:从前,往昔。  鲁昭:鲁昭公(前560—前510年),鲁国诸侯王。姓姬名裯(一作稠、袑),鲁襄公之子。前517年,鲁昭公伐季孙氏大败,逃到齐国,后辗转至晋国,晋国欲使昭公返鲁,鲁国不纳,前510年死于晋地。  叔孙:即叔孙豹(?—前537年),春秋鲁国大夫。姬姓,叔孙氏,名豹,曾辅佐鲁昭公,提出了著名的立德、立功、立言的“三不朽说”。

[5]其:副词。在句中表示揣测语气,相当于“恐怕”“或许”“大概”“可能”的意思。

02卷二

目录#

高帝灭楚

诸将之叛

匈奴和亲

诸吕之变

南越称藩

七国之叛

梁孝王骄纵

附录: 西汉皇帝世系表

返回总目录

高帝灭楚#

【内容提要】#

本篇主要叙述了汉高帝刘邦率军与西楚霸王项羽激战,最终灭掉楚国的历史过程。

经过五年的苦战,勇力过人、豪气盖世的西楚霸王项羽被围垓下,在乌江自刎,善于智斗的刘邦终于夺取天下。

秦二世(嬴胡亥)统治时期,秦国的兵力依然强盛。楚怀王为扩大地域,鼓励将士入关,并约定“先入定关中者王之”。楚军将士不敢入关,项羽愤恨秦朝杀死项梁,表示愿与刘邦一起入关,从而揭开了高帝灭楚斗争的序幕。刘邦西进咸阳后,不留恋秦国宫室财宝,返回霸上后,又召集父老和豪杰约法三章。项羽入关后,洗劫屠戮咸阳城,搜取秦朝的金银财宝和妇女。他请示楚怀王入关称王,因按约定称王未如愿而心怀不满,便将怀王放逐长江以南。

高帝灭楚始于关中称王。项羽入关后不顾背上逐君反叛的骂名,急于称王。他自恃兵力强大,私自划分土地,封各将领为侯,自立为西楚霸王。他深知刘邦有夺取天下之心,又不愿承受违约罪名,立刘邦为汉王。刘邦想攻打项羽,后因实力所限,只得在领地扩充实力,招纳贤才。回到封地后,刘邦任命萧何为丞相,听从萧何推荐,任命韩信为大将军,让他统率军队。后来任命张良为成信侯,做他的谋臣。随着军力的增强,刘邦率军东渡黄河,攻下河内;趁项羽与齐国作战,统率各诸侯军攻入楚都彭城。项羽收复彭城,击溃汉军。刘邦率余部汉军坚持作战。

在楚霸王项羽与汉王刘邦的作战中,项羽凭着强大兵力屡战屡胜,刘邦却用谋略使汉军由弱变强。韩信打败向齐国增援的楚军,请示汉王刘邦让他镇守齐国,代理齐王;刘邦为防他反叛,封他齐王,征调他的部队继续攻打楚军。刘邦率军死守荥阳成皋,夺取楚军敖仓粮食集散地,阻止楚军西进。为瓦解楚军力量,采取釜底抽薪策略,派萧何说服楚战将英布归汉所用。在楚军猛攻汉军形势危急时,用计离间楚国君臣关系,使范增等楚国重臣离项羽而去,无不显示刘邦利用谋略削弱楚军实力的战略思想。

在楚霸王项羽与汉王刘邦交战过程中,项羽刚愎自用,只知以力拼杀,致使自己到了缺乏援助力量、军粮吃尽的境地。项羽与刘邦签下了两人平分天下,以“鸿沟”为界的约定。而此时,刘邦看到汉朝已得到大半个天下,正是灭亡楚国的大好时机,于是率军追击项羽到固陵,将楚军营包围,使项羽面临四面楚歌,最终东渡乌江自刎,从而以楚国灭亡结束了数年的楚汉之争。

【原文】#

秦二世二年[1]。初,楚怀王与诸将约,先入定关中者王之[2]。当是时,秦兵强,常乘胜逐北,诸将莫利先入关[3]。独项羽怨秦之杀项梁,奋,愿与沛公西入关[4]。怀王诸老将皆曰:“项羽为人慓悍猾贼,尝攻襄城,襄城无遗类,皆坑之,诸所过无不残灭[5]。且楚数进取,前陈王、项梁皆败[6]。不如更遣长者,扶义而西,告谕秦父兄[7]。秦父兄苦其主久矣,今诚得长者往,无侵暴,宜可下[8]。项羽不可遣;独沛公素宽大长者,可遣[9]。”怀王乃不许项羽,而遣沛公西略地,收陈王、项梁散卒以伐秦[10]。

【注文】#

[1]秦:朝代名。中国历史上第一个统一的多民族封建专制主义中央集权国家。公元前221年,秦王政统一六国,建立秦朝,定都咸阳(今陕西咸阳东北)。采取一系列措施巩固封建中央集权。派兵北逐匈奴,南平百越。将全国分为三十六郡,后增至四十余郡。秦朝赋役繁重,刑法严酷。秦二世胡亥即位后,社会矛盾进一步激化。陈胜、吴广领导农民起义。全国各地响应,反秦斗争风起云涌。后赵高胁迫胡亥自杀,立公子婴为秦王。后刘邦率起义军进抵霸上,子婴投降,秦朝灭亡。  秦二世(前230—前207年):名胡亥。秦始皇次子。与丞相李斯、中车府令赵高谋篡改遗诏,赐兄扶苏死,自袭帝位,称二世皇帝。葬始皇于骊山陵墓,逼令后宫无子者均从死,又将全部筑墓工匠活埋于墓内。继续大修阿房宫和驰道。信用赵高,严刑峻法,有加无已,租役繁重至极,终于引起陈胜、吴广农民起义。听信赵高谗言,先后处死右丞相冯去疾、左丞相李斯。刘邦率起义军入关中,二世责让赵高,赵高派其婿阎乐率兵围宫,逼胡亥自杀于望夷宫中。

[2]楚:政权名。秦末项梁、项羽拥立战国时楚怀王孙熊心为王,仍称楚怀王,其国号为“楚”。灭秦后,项羽又杀熊心,自立为西楚霸王。公元前202年,项羽被汉军困于垓(gāi)下(今安徽灵璧南),自刎而死,其国亦灭。  楚怀王(生卒年不详):秦朝末年人。熊氏,名心。战国时楚怀王熊槐之孙。秦灭楚后,藏匿民间为人牧羊。秦二世时,被项梁等人拥立为怀王,以为号召。他与诸将立约:先入关者王之。秦亡后,依约王刘邦于关中,遂为项羽所怨,佯尊为义帝而徙之江南,都郴(今湖南郴州)。不久,英布、吴芮、共敖等人据项羽密令杀之于江中。  关中:地区名。指战国末函谷关以西秦国故地,包括今河南灵宝市以西及陕西、甘肃东部和四川地区。

[3]逐北:追击败兵。  莫利:不认为有利。

[4]独:唯独,仅仅。  项羽(前232—前202年):即项王,又称西楚霸王。名籍。下相(今江苏宿迁西南)人。秦二世时,从其叔项梁于吴(今江苏苏州)起义。项梁战死,他代将其军,于巨鹿之战摧毁秦军主力。秦亡,自立为西楚霸王,大封诸侯,以刘邦为汉王。后楚汉相争,为刘邦所败,兵困垓下(今安徽灵璧南),突围至乌江(今安徽和县东北),自刎而亡。  项梁(?—前208年):秦下相人。项燕子。项氏为楚国贵族,世代为将。秦二世时,陈胜起义后,他与其侄项羽杀秦会稽郡守殷通,在吴(今江苏苏州)起义,有兵八千人。后任张楚上柱国,率兵渡江西进。陈胜失败后,立楚怀王的孙子熊心为王,仍称楚怀王,自号武信君。曾率军击败秦将章邯,因轻敌,在定陶(今山东定陶西北)战死。  奋:振作。  沛公:即汉高祖刘邦(前256—前195年)。西汉王朝的建立者。沛县人。曾任泗水亭长。秦二世时,陈胜、吴广起义,起兵响应,称沛公。初属项梁,后与项羽领导的起义军同为反秦主力,率军攻占咸阳,推翻秦朝统治,约法三章,废除秦的严刑苛法。项羽大封诸侯王时,他被封为汉王,占有巴蜀、汉中之地。不久,即与项羽展开长达五年的战争。战胜项羽后,即皇帝位。在位期间,继承秦制,实行中央集权制度。先后消灭韩信、彭越等异姓诸侯王;迁六国旧贵族和地方豪强到关中,以加强控制;实行重本抑末政策,发展农业生产,打击商贾;以秦律为根据,制定《汉律》,使社会经济逐渐恢复,统一局面日趋巩固。

[5]慓悍:同“剽悍”,轻捷勇猛。  猾贼:奸狡。  尝:曾经。  襄城:古邑名。本春秋郑汜(sì)邑(南汜)。战国属魏,改名襄城。即今河南襄城。  遗类:指残存者。  坑:秦代一种死刑。即活埋。  残灭:残杀毁灭。

[6]数:屡次。  进取:进攻;攻取。  陈王:即陈胜(?—前208年)。字涉,秦朝阳城(今河南登封东南)人。雇农出身。前209年,秦二世征调贫苦农民屯戍渔阳,他与吴广同时被征,行至蕲县大泽乡时,两人发动同行戍卒九百人起义。起义军迅速攻占蕲、铚、酂、苦、柘、谯等地,兵至数万人,在陈县建立张楚政权,他被推为王。旋即派人率兵攻赵、魏、九江等地。又派周文率主力进攻关中。后周文被秦将章邯战败,他在陈县率军坚持战斗,失利后退至下城父,为御者庄贾杀害。

[7]长者:指德高望重的人。  告谕:晓谕;晓示。

[8]苦:使困苦,困于。  侵暴:侵犯暴掠。  宜:应该。

[9]素:平素,往常,旧时。  宽大:大度;宽厚,不苛刻。

[10]乃:于是,就。  略地:占领土地;侵占土地。  散卒:指被击溃了的士兵。  伐:讨伐,进攻。

【译文】#

秦二世胡亥二年(前208年)。当初,楚怀王与反秦的众将领共同约定,谁先攻入关中,谁就被尊为王。当时,秦国的兵力相当强盛,常常乘胜追击,楚军众将领都不敢率先进入关中。只有项羽怨恨秦军杀死他的叔父项梁,自告奋勇,愿与沛公一起向西进入关中。楚怀王的诸位老将们都说:“项羽为人剽悍凶狠,残暴狡猾。他曾进攻襄城,将襄城的百姓全部杀了,一个不留。凡是他经过的地方无不遭毁灭。况且楚军多次攻秦,以往陈王、项梁都失败了。不如另派忠厚的长者前去,依仗仁义西进,告谕秦国的父老兄弟。秦地的父老兄弟痛恨暴君已经很久了,现在如果真能都得到宽厚的长者前往,不实施暴力,攻下秦地是没有问题的。不能派遣项羽;只有刘邦平日宽大忠厚,可以派他去。”于是楚怀王没派项羽,而派刘邦向西攻城略地,收集陈王、项梁的散兵,以进攻讨伐秦朝。

【原文】#

汉高祖元年冬十月,沛公西入咸阳,诸将皆争走金帛财物之府分之,萧何独先入收秦丞相府图籍藏之,以此沛公得具知天下厄塞、户口多少、强弱之处[1]。沛公见秦宫室、帷帐、狗马、重宝、妇女以千数,意欲留居之[2]。樊哙谏曰:“沛公欲有天下耶?将为富家翁耶?凡此奢丽之物,皆秦所以亡也,沛公何用焉!愿急还霸上,无留宫中[3]。”沛公不听。张良曰:“秦为无道,故沛公得至此[4]。夫为天下除残贼,宜缟素为资[5]。今始入秦,即安其乐,此所谓‘助桀为虐’[6]。且忠言逆耳利于行,毒药苦口利于病,愿沛公听樊哙言[7]。”沛公乃还军霸上。

【注文】#

[1]汉:朝代名。包括西汉(前汉)、东汉(后汉)。公元前206年刘邦灭秦,后又打败项羽,于公元前202年称帝,国号汉,建都长安(今陕西西安),史称西汉或前汉。疆域东、南至海,西到巴尔喀什湖、费尔干纳盆地、葱岭,西南至云南、广西以及越南北、中部,北到大漠,东北迤至朝鲜半岛北部。初始元年(8年),外戚王莽代汉称帝,国号新。天凤四年(17年),爆发赤眉绿林农民大起义。建武元年(25年)刘秀(即汉光武帝)重建汉朝,建都洛阳(今河南洛阳),史称东汉或后汉。中平元年(184年),爆发黄巾农民大起义,东汉王朝名存实亡。延康元年(220年)曹丕称帝,东汉灭亡。汉代共历二十七帝,统治四百零六年。  咸阳:都邑名。在今陕西咸阳市东北窑店附近。因位于九嵏(zōng)山之南、渭水之北,在山水之阳,故名。战国秦孝公时自栎(yuè)阳迁都于此。  金帛:黄金和丝绸。泛指钱物。  萧何(?—前193年):西汉大臣。泗水沛人。秦二世时随刘邦起兵反秦,为沛丞,监督诸事。攻克咸阳后,收藏秦朝律令图书,使刘邦具知天下地理山川形势及户口数,劝刘邦接受项羽分封,以待时机。楚汉战争时,任丞相,留守关中。举荐韩信为大将军。制定规章制度,立宗庙、社稷、宫室、县邑。刘邦称帝后,封酂(zàn)侯。后受命采摭(zhí)秦法,作律九章,后封相国。高帝死后,复事惠帝。病危时推荐曹参继任相国。  丞相:官名。初置于战国时的秦悼王,为百官之首,亦称相邦(楚国称令尹)。秦代以后为国家官僚组织中的最高官职,帮助皇帝综理万机。汉初置相国,后复改丞相,与太尉、御史大夫合称三公。汉末改丞相为大司徒。  图籍:地图和户籍。常用来指疆土人民。  具:完备;详尽。  厄(è)塞:险要之地、险阻要塞。  户口:住户和人口的总称。计家为户,计人为口。

[2]宫室:指帝王的宫殿。  帷帐:帷幕床帐。  狗马:犬与马。指游畋之物。  重宝:重器。多指鼎彝宝器,也泛指贵重的财宝。

08卷八

目录#

宦官亡汉 党锢之祸 董卓之乱

黄巾之乱

韩马之叛

袁绍讨公孙瓒

附录: 东汉皇帝世系表

袁氏家族世系表

返回总目录

宦官亡汉 党锢之祸 董卓之乱#

【内容提要】#

本篇叙述了东汉政权最后灭亡的经过,涉及许多重大事件,主要有党锢(gù)之祸、黄巾起义、袁绍诛灭宦官以及董卓之乱等。

汉桓帝延熹二年(159年)梁氏外戚集团被消灭后,东汉政权转入宦官手中,形成宦官独霸政权的局面。宦官比外戚更加贪婪、凶残,他们把持朝廷内外的重要官职,欺压百姓,迫害政敌,贪赃枉法,穷奢极欲。宦官的黑暗统治,引起人民的普遍不满和愤恨,激起了反抗斗争。

宦官把持政权,迫使在朝的中下级官吏与在野的名士,以及儒生、太学生等几股力量联合起来,结成了以李膺(yīng)、陈蕃(fán)、范滂(pāng)等人为核心领导者的士人集团,然而宦官集团是不会甘心退出政治舞台的,因此先后制造了东汉历史上两次有名的“党锢之祸”。

士大夫的势力被摧毁后,东汉政权并未得到稳定,统治阶级内部外戚与宦官的斗争仍在进行。汉灵帝之死,何太后临朝,大将军何进辅政,使形势迅速朝着有利于外戚的方面发展。

然而何氏外戚集团在宦官的收买贿赂下,内部出现分歧,使得何进难以决断。何进觉得势单力孤,而求助于中军校尉袁绍等人,袁绍又给何进出谋,征召地方豪强董卓等人进军京都协助诛灭宦官。

宦官集团被消灭后,大权又旁落到董卓之手。由于董卓废少帝刘辨,立陈留王为帝,挟天子以令诸侯,从而导致宗室、豪强以讨伐董卓为名,纷纷起兵,乘机争雄。董卓被刺死后,其势力并未消灭。董卓的部将李傕(jué)、郭汜(sì)、樊稠(chóu)继续控制朝政。相互之间争夺权势,干戈相向,以至关中残破,人口锐减。至此,汉献帝虽然仍在其位,但东汉政权已分崩离析,东汉王朝实际已经灭亡了。外戚与宦官的黑暗统治,终于断送了东汉政权。

【原文】#

汉和帝永元四年,窦宪兄弟专权,帝以朝臣上下莫不附宪,独中常侍钩盾令郑众不事豪党,遂与定议诛宪[1]。事见《窦氏专恣》。

【注文】#

[1]汉和帝(79—105年):东汉皇帝,名刘肇(zhào)。公元88年至105年在位,汉章帝子。即位时十岁,窦(dòu)太后临朝,后兄窦宪等专政。东汉永元四年(92年),与宦官郑众定计捕杀窦氏及其党羽后亲政。屡派兵征伐匈奴、羌及西域诸国,并发布减免灾区租、赋之诏。在位期间,西域都护班超曾派人西使大秦(罗马帝国),至西海(波斯湾)被阻而还,为汉使所达最西之地。  永元:东汉和帝刘肇的第一个年号。元年是公元89年,末年是公元105年,汉朝使用这个年号时间共记十七年。  窦宪(?—92年):东汉扶风平陵(今陕西咸阳西北)人,字伯度。因妹为章帝皇后,得任侍中、虎贲(bēn)中郎将,宠贵日盛,至倚势强夺明帝女沁(qìn)水公主园田。和帝时窦太后临朝,与弟笃、景、瓌(guī)并居要职,内执机密,外宣诏命。曾遣客刺杀都乡侯刘畅,事发,自求击匈奴以赎死。永元元年(89年),因南匈奴单于请兵北伐,遂任车骑将军,与执金吾(yù)耿秉率大军出塞,大破北匈奴于稽落山(今蒙古国达兰扎达加德西北),临私渠比鞮(dī)海,出塞三千余里,至燕然山(今蒙古国境内杭爱山),刻石纪功。北匈奴八十一部二十余万人先后归降。迁大将军,位在三公之上。第二年(90年)复遣将破北匈奴于金微山(今新疆西北部阿尔泰山)。与诸弟皆恃权骄纵,横行京师。地方刺史、守令多出其门,朝臣皆望风承旨。永元四年(92年)和帝及宦官郑众等合谋诛除窦氏,他被迫自杀。  中常侍:官名。西汉元帝时置,为加官,诸侯、将军、卿大夫、尚书、郎中等官员,凡加常侍者,即可出入禁中,常侍皇帝左右。无定员,可多至数十人,任用士人。东汉改为专职,侍从皇帝左右,顾问应对,赞导宫中诸事。初秩千石(shí),后增为比二千石。名义上隶于少府,实则直属皇帝。明帝时定员四人,杂用士人与宦官。和帝时增为十人,并兼领卿署之职。安帝时和熹太后以女主称制,不接公卿,遂成为宦官专职。东汉后期任此职者结党营私,把持朝政,权倾人主。  钩盾令:官名。西汉隶少府,秩六百石。由宦臣充任,官署设在未央宫中,掌管京城附近皇家苑囿,属官有五丞两尉。甘泉、上林等大苑囿别置专官管理,不属钩盾。东汉名义上仍隶少府,管理京城内外园苑中离宫池观,职任颇大,郑众、蔡伦等皆以中常侍兼任,属官更多,有永安丞、苑中丞、果丞、鸿池丞、南园丞、濯(zhuó)龙监、直里监等。灵帝时或任用士人。  郑众(?—114年):东汉南阳犨(chōu)县(今河南鲁山东南)人,字季产。章帝时为小黄门,迁中常侍。和帝时加位钩盾令。不附权威,深得宠信。永元四年(92年),参与谋诛窦宪等人,以功迁大长秋。由是常与议政事,永元十四年(102年)封鄛(cháo)乡侯,宦官弄权干政自此起。

【译文】#

东汉和帝永元四年(92年),窦宪兄弟独揽大权,和帝认为朝廷中上下的大小官员没有不依附窦宪的,只有中常侍钩盾令郑众不侍奉窦氏集团,于是便与他密谋决定诛杀窦宪。事可参见《窦氏专恣(zì)》。

【原文】#

郑众迁大长秋[1]。帝策勋班赏[2],众每辞多受少,帝由是贤之,常与之议论,宦官用权自此始矣[3]。

【注文】#

[1]大长(cháng)秋:官名。秦称将行。汉景帝时改称大长秋,宣达皇后旨意,管理宫中事宜,为皇后的近侍,多由宦官充任。长秋本为汉代皇后所居宫名,其官署称长秋寺。

[2]策:古代帝王对臣下封土、授爵或免官。  班:本意指瑞玉,引申为赐予或分给。

[3]宦(huàn)官:指阉割后失去男性功能在宫中侍奉皇帝及其家族成员之人。亦称寺人、阉人、阉宦、宦者、中官、内官、内臣、内侍或内监等。其内部等级森严。宦官本为内廷执役的奴仆,明令不得干预外政,但因其接近皇室,历史上常造成宦官专权的局面,东汉即是如此。

【译文】#

郑众升任大长秋。和帝依据其所立特殊功劳赐勋颁赏他,郑众总是推辞多而接受少,和帝因此认为郑众是位贤臣,常常与他一起讨论朝政大事,宦官专权自此开始。

【原文】#

十四年,初封大长秋郑众为鄛乡侯[1]。

【注文】#

[1]鄛(cháo)乡:古地名,在今河南南阳南部。  侯:古爵位名。周朝五等爵的第二等。秦汉实行二十等爵制,最高一级为彻侯,第二级为关内侯,以封同姓或外戚、功臣。彻侯后来避汉武帝刘彻讳改为通侯,又改为列侯。东汉时期,列侯分县侯、乡侯、亭侯三级。

【译文】#

汉和帝永元十四年(102年),封大长秋郑众为鄛乡侯。

【原文】#

安帝永初元年秋九月庚午,太尉徐防以灾异、寇贼策免[1]。辛未,司空尹勤以水雨漂流策免[2]。

【注文】#

[1]安帝:即汉安帝刘祜(hù)(94—125年),东汉第六位皇帝(106—125年在位),在位十九年,享年三十二岁,葬于恭陵。谥号孝安皇帝,庙号恭宗。  永初:汉安帝刘祜的第一个年号,从公元107年到公元113年。  太尉:官名。秦、西汉为全国性军政长官,与丞相、御史大夫并列,秩万石。汉武帝建元二年(前139年)省。元狩四年(前119年),置大司马,实为太尉改名。东汉改大司马置,列三公之首,与司徒、司空共同行使宰相职权,秩万石。  徐防(生卒年不详):东汉沛(pèi)国铚(zhì)(今安徽濉溪)人,字谒(yè)卿。世习《易》学。明帝永平中举孝廉。特补尚书郎,职典枢机。后历任司隶校尉、魏郡太守、少府、大司农、司空、司徒。曾以太学试博士弟子皆重意说,不修家法,乃上疏建议,凡博士及甲乙策试,宜从经典章句,出五十难题以试之,解释多者为上,引文明者为高,后遂施行。东汉殇帝延平元年(106年),迁太尉,参录尚书事。安帝即位,以定策封龙乡侯。不久因灾异及羌乱策免。三公以灾异策免自此始。  灾异:东汉安帝永初元年(107年)三月有日食,十八个郡国发生地震。汉代认为宰相的职责是调和阴阳、辅佐皇帝,地震、日食都是阴阳不调的表现,是宰相失责,所以要免官。这是东汉第一次因为灾异罢免三公。  寇贼:指的是东汉永初元年(107年)河西走廊一带的羌人包括烧当羌、滇零、锺羌,反抗东汉政府造反之事。  策免:帝王以策书免官。

[2]司空:官名。东汉光武帝建武二十七年(51年),改大司空为司空,与太尉、司徒并为三公,分掌宰相职能,秩万石。掌水土工程,名义上分部宗正、少府、大司农三卿,并参议大政,实际上权归尚书,三公上下行文,受成而已。历代沿置,名列三公之末。  水雨漂流:指大水冲毁百姓房屋等家产。

【译文】#

东汉安帝永初元年(107年)秋季九月庚午(初一日)这天,太尉徐防因为灾异现象和羌人作乱被免官。辛未(初二日)这天,司空因为大雨水灾,被免除官职。

【原文】#

仲长统《昌言》曰:光武皇帝愠数世之失权,忿强臣之窃命,矫枉过直,政不任下,虽置三公,事归台阁[1]。自此以来,三公之职,备员而已;然政有不治,犹加谴责。而权移外戚之家,宠被近习之竖,亲其党类,用其私人,内充京师,外布列郡,颠倒贤愚,贸易选举,疲驽守境,贪残牧民,挠扰百姓,忿怒四夷,招致乖叛,乱离斯瘼,怨气并作,阴阳失和,三光亏缺,怪异数至,虫螟食稼,水旱为灾[2]。此皆戚宦之臣所致然也,反以策让三公,至于死、免,乃足为叫呼苍天,号咷泣血者矣[3]。昔文帝之于邓通,可谓至爱,而犹展申屠嘉之志[4]。夫见任如此,则何患于左右小臣哉!至如近世,外戚宦竖,请托不行,意气不满,立能陷人于不测之祸,恶可得弹正者哉[5]!

【注文】#

[1]仲长统(179—220年):东汉山阳高平(今山东微山西北)人,字公理。少好学,博览群书,擅长文辞。年二十余游学青、徐、并、冀各州。不拘小节,时人或称之为狂生。州郡辟(bì)召,多称病不就。到汉献帝时,尚书令荀彧(yù)闻其名,举为尚书郎,后参丞相曹操军事,著有《昌言》十余万言,对战国以来社会治乱及当时豪强地主之骄奢淫逸多有论述,并流露出反“天命”的思想。《后汉书·仲长统传》录有《昌言》的《理乱篇》《损益篇》和《法诫篇》。  《昌言》:书名。全名为《仲长子昌言》。东汉末仲长统著。据《后汉书》本传说:“凡三十四篇,十余万言。”后大部分佚失,所存仅十分之一二。保存在《后汉书》和《群书治要》中,另有清代严可均辑本二卷。内容主要提出“人事为本,天道为末”的论点,暴露当时社会的黑暗现实,批判汉初以来的神学传统思想。  光武皇帝:即汉光武帝刘秀(前6—57年)。东汉创建者。25年至57年在位。汉高祖九世孙。南阳蔡阳(今湖北枣阳西北)人,字文叔。早年与兄刘(yǎn)等率宾客起兵加入绿林起义军。刘玄称帝后,授为太常偏将军。西汉更始元年(23年)与王凤所率起义军配合,取得昆阳之战胜利,歼灭王莽军主力。刘因争权被杀后,乃隐忍伪装,言笑如常,以此取得更始帝及诸大将信任。不久被派往河北,以恢复汉家制度为号召,取得当地部分官吏豪强的支持,镇压并收编铜马等起义军,势力大增。被封为萧王后,即拒绝更始召命。东汉建武元年(25年)在鄗(hào)(今河北柏乡北)称帝。后镇压赤眉起义军,削平各地割据势力,统一全国,建都洛阳。即位之初,采取休养生息政策,减免赋税、徭役,裁省吏员;多次下诏释放及禁止残害奴婢,使大批奴婢免为庶民;提倡兴修水利,发展农业生产,实行度田,检核垦田和户口,不久因遭到强烈反抗而失败;又加强中央集权,削弱三公职权,全国政务皆通过尚书台而总揽于皇帝;妥善安置功臣,赐其高爵厚禄而不使干预政事,禁止外戚、宦官干政;裁并四百余县,取消内郡地方兵,裁撤郡都尉,削弱地方兵权,扩大中央直接统辖的军队。统治期间,社会生产发展,专制主义中央集权得到加强,史称“光武中兴”。  愠(yùn):怒、怨恨。  数世之失权:指西汉末年皇权被外戚王氏掌握。  强臣之窃命:指王莽窃取西汉王朝,建立新朝。  三公:周代三公有两说:一说司马、司徒、司空为三公,一说太师、太傅、太保为三公。西汉时以丞相(大司徒)、太尉(大司马)、御史大夫(大司空)合称三公。东汉时以太尉、司徒、司空合称三公。又称三司。为共同负责国家军政的最高长官。  台阁:东汉至隋唐对尚书台(省)的别称。

初见-杂七杂八

系统-系统#

  • 可以改主机名,这样别人识别你这台路由器就会看到那个名字
  • 改时区,改成Asia/Shanghai

网络-接口#

改网段#

各个wwan中#

不发送主机名#

改DNS#

网络-无线#

不是所有wifi都能一下子就扫描出来,目前我还是云里雾里的,有时候设置完了扫描出来几秒钟就出不来了。不过只要是连接上的,即使扫描列表==隐藏了后续也能连上。附上当前配置 ~~2.4G配置以及5G配置(主要是那个信道以及宽度==),决定了你能扫出哪些wifi,具体怎么决定的我不清楚,目前暴力算法尝试)~~

开2.4G wifi出来#

开5G出来#

如果在国内,最大传输功率要依据监管要求设置

中继上的wifi#

  • 信道和宽度尽量保持和原来的wifi一致
  • 接口配置-高级设置,可以随机mac地址

网络-MultiWAN 管理器#

这个可以指定中继某个wifi失败的时候自动中继下一个(按优先级),目前用不上,我没去尝试

其他#

  • 还有一些东西目前听说了但我没去尝试,比如 乘飞机
  • 最后备份了一下配置,不过估计不太能用上

Be12Pro

下文复制自 https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=8463884&extra=page%3D1&page=1 , 原作者为 igetmail

1. 准备工作#

请提前下载好以下固件文件:

  1. 过渡固件: be12 pro openWRT过渡固件.bin

  2. 正式固件: openwrt-mediatek-filogic-tenda_be12-pro-squashfs-sysupgrade.bin ,固件可在 https://firmware-selector.openwrt.org 搜索“Tenda BE12 Pro进行下载 目前我在【下载应向】这里下载的固件没有web管理界面(luci及luci汉化),所以要点上面那个【关于此构建-自定义原装软件包,如下图2】


    luciluci-i18n-base-zh-cn 是必须的。如果用默认的构建能联网 openwrt默认关了wifi,所以如果想联网只能通过网线 但没有web界面的情况下,想办法从ssh进去安装这两个包即可 如果自行构建的情况下,我保持它默认的预安装的那些,并添加了luci-i18n-base-zh-cn

2. 刷机 (二个阶段)#

第一阶段:刷入临时系统#

1.    电脑通过网线连接到路由器的 LAN 口,登录路由器原厂管理界面(通常为 192.168.0.1 或 tendawifi.com)。 2.    进入 系统管理-> 软件升级-> 本地升级; 3.    选择文件:be12 pro openWRT过渡固件.bin ; 4.    点击升级,等待进度条完成; 5.    设备将自动重启;

第二阶段:刷入openWRT正式系统#

1. 路由器重启完成后,电脑通常会自动获取新的 IP 地址(默认为 192.168.1.x 网段); 2. 打开浏览器访问 192.168.1.1,账号:root ,密码(留空/none);

  1. 此时进入到 OpenWrt 主界面,选择系统 -> 备份与更新 -> 更新固件
  2. 选择正式固件进行升级:openwrt-mediatek-filogic-tenda_be12-pro-squashfs-sysupgrade.bin; 5. 取消勾选 “保留设置并继续使用当前的配置“,建议进行纯净安装; 6.    等待路由器刷入新固件,重启完成后,您已成功刷入完整的 OpenWrt 系统!

注意:openWRT系统默认Wi-Fi是关闭的,可在主页选择 网络 ->无线,选择启用SSID。为充分发挥无线性能,如果你在Australia,可以选择AU-Australia, 信道选择低信道,比如36(避免选择100~144 Band3信道),频宽选择160MHz。选对应所在地,符合法规无线电限制要求。

01颜色

颜色#

我们在前几章中简单地使用和处理了颜色,但从未对它们进行过正式的定义。在这里,我们将讨论颜色的概念,并为接下来的光照章节构建场景。

在现实世界中,颜色可以取任何已知的颜色值,每个物体都有其独特的颜色。而在数字世界中,我们需要将(无限的)真实颜色映射到(有限的)数字值,因此并非所有现实世界的颜色都能用数字方式表示。颜色通常使用 redgreenblue 三个分量进行数字表示,简写为 RGB 。通过对这三个值在 [0,1] 范围内进行不同的组合,我们几乎可以表示任何颜色。例如,要得到_珊瑚色_ ,我们可以定义一个颜色向量:

glm::vec3 coral(1.0f, 0.5f, 0.31f);

我们在现实生活中看到的物体颜色并非它本身的颜色,而是物体反射的颜色。物体未吸收(反射)的颜色就是我们感知到的颜色。例如,太阳光被感知为白光,它是多种不同颜色混合而成的(如图所示)。如果我们用这种白光照射一个蓝色的玩具,它会吸收除蓝色以外的所有白色光。由于玩具不吸收蓝色光,所以蓝色光会被反射。这些反射光进入我们的眼睛,使我们觉得玩具是蓝色的。下图展示了一个珊瑚色玩具反射多种不同强度颜色的光:

你可以看到,白色的阳光是由所有可见颜色组成的,物体吸收了其中的大部分颜色。它只反射那些代表物体颜色的颜色,而这些颜色的组合就构成了我们所感知到的颜色(在本例中是珊瑚色)。

从技术上讲,这有点复杂,但我们会在 PBR 章节中讨论这个问题。

这些颜色反射规则直接适用于图形领域。在 OpenGL 中定义光源时,我们需要给它赋予颜色。上一段中我们用了白色,所以光源也用白色。如果我们把光源的颜色值乘以物体的颜色值,得到的颜色就是物体的反射颜色(也就是它的感知颜色)。让我们再来看看之前的例子(这次用珊瑚色),看看如何在图形领域计算它的感知颜色。我们通过将光源颜色向量和物体颜色向量逐个分量相乘来得到结果颜色向量:

glm::vec3 lightColor(1.0f, 1.0f, 1.0f);
glm::vec3 toyColor(1.0f, 0.5f, 0.31f);
glm::vec3 result = lightColor * toyColor; // = (1.0f, 0.5f, 0.31f);

我们可以看到,玩具的颜色 吸收了_大部分白光,但根据其自身的色值,反射出几种红色、绿色和蓝色光。这模拟了现实生活中颜色的运作方式。因此,我们可以将物体的颜色定义为_它从光源反射的各种颜色分量的量 。那么,如果我们使用绿光会发生什么呢?

glm::vec3 lightColor(0.0f, 1.0f, 0.0f);
glm::vec3 toyColor(1.0f, 0.5f, 0.31f);
glm::vec3 result = lightColor * toyColor; // = (0.0f, 0.5f, 0.0f);

正如我们所见,这个玩具本身不吸收或反射红光和蓝光。它吸收了光线中一半的绿色成分,但也反射了另一半绿色成分。因此,我们感知到的玩具颜色是深绿色。我们可以看到,如果使用绿光,只有绿色成分会被反射并被感知;红色和蓝色成分则无法被感知。结果,珊瑚物体突然变成了深绿色。让我们再用深橄榄绿色的光来做一个例子:

glm::vec3 lightColor(0.33f, 0.42f, 0.18f);
glm::vec3 toyColor(1.0f, 0.5f, 0.31f);
glm::vec3 result = lightColor * toyColor; // = (0.33f, 0.21f, 0.06f);

正如你所看到的,我们可以使用不同的光色来给物体赋予有趣的颜色。玩转色彩并不难,可以尽情发挥创意。

好了,关于颜色就说到这里,让我们开始搭建一个可以进行实验的场景吧。

灯光场景#

在接下来的章节中,我们将通过模拟真实世界的光照并大量运用色彩来创建有趣的视觉效果。由于现在我们将使用光源,因此我们需要将它们显示为场景中的视觉对象,并添加至少一个对象来模拟光照。

首先,我们需要一个用来照射物体的模型,我们将使用前几章中提到的那个著名的容器立方体。我们还需要一个光源模型来表示光源在 3D 场景中的位置。为了简单起见,我们也用一个立方体来表示光源(我们已经有了 顶点数据, 对吧?)。

23批量渲染对象

核心内容是如何通过修改 MVP(模型-视图-投影)矩阵 在不同位置多次绘制同一个物体,并初步探讨了性能优化的思路。

第 23 集:在 OpenGL 中渲染多个物体#

  • [00:00:00 - 01:25] 核心目标与现状回顾

    • 回顾之前只能在屏幕上渲染一个 Logo。
    • 目标:在不同位置渲染两个或多个相同的物体。
    • 解决 ImGui 鼠标位置偏移的小技巧:切换 GPU 驱动(由 Intel 切换至 Nvidia)解决了一些驱动层面的显示问题。
  • 渲染原理深究:Shader、VAO 与 Draw Call

    • Shader (Program): 告诉 GPU “如何”绘制数据,而不仅仅是光照。
    • Vertex Array (VAO): 包含实际的顶点数据(位置、纹理坐标等)。
    • Index Buffer: 决定顶点的组合顺序。
    • Draw Call: 调用 glDrawElements,结合 Shader 和数据完成最终的光栅化。
  • 如何改变物体位置?(两种方案)

    • 方案 A(低效): 为每个物体创建独立的顶点缓冲区(Vertex Buffer)。缺点:浪费显存,频繁切换 Buffer 速度慢。
    • 方案 B(推荐): 保持顶点数据不变,但在每次绘制前修改 Uniform 变量(即 Model 矩阵)。通过矩阵变换将同一组顶点映射到屏幕的不同位置。
  • 顶点坐标的标准化归零

    • 为了方便平移,将顶点的原始坐标从 [100, 200] 修改为以原点为中心的 [-50, 50]
    • 这样做的好处是物体的 Origin(原点) 位于其中心,应用平移矩阵时坐标计算更直观。
		// 定义三角形的顶点坐标(CPU 内存)
		float positions[] = {
			-50.0f, -50.0f,0.0f,0.0f,//0
			50.0f, -50.0f,1.0f,0.0f,//1
			50.0f, 50.0f,1.0f,1.0f,//2

			//0.5f, 0.5f,
			-50.0f, 50.0f,0.0f,1.0f,//3
			//-0.5f, -0.5f,
		};
		
		//while之前的代码
		glm::vec3 translationA(200, 200, 0);
		glm::vec3 translationB(400, 200, 0);
		
		//while代码块内的代码
		
			if (r > 1.0f)
				increment = -0.05f;
			else if (r < 0.0f)
				increment = 0.05f;

			r += increment;
			//绘图前重新绑定
			shader.Bind();

			{
				//=======imgui添加============
				//imgui:这里吧mvp相关代码移到while循环中
				//向右向上移动200
				glm::mat4 model = glm::translate(glm::mat4(1.0f), translationA);

				glm::mat4 mvp = proj * view * model;
				shader.SetUniformMat4f("u_MVP", mvp);

				//=======imgui添加============
				//在u_Color的位置上设置数值
				//shader.SetUniform4f("u_Color", r, 0.3f, 0.0f, 1.0f);
				//========设置uniform========

				renderer.Draw(va, ib, shader);
			}

			{
				//批量渲染对象
				glm::mat4 model = glm::translate(glm::mat4(1.0f), translationB);
				glm::mat4 mvp = proj * view * model;
				shader.SetUniformMat4f("u_MVP", mvp);
				renderer.Draw(va, ib, shader);
			}

			//=======imgui添加============
			//{}//小窗口前面的代码
				

渔樵问对

Cover Image

版权信息#

COPYRIGHT#

书名:渔樵问对:白话解读版

作者:(北宋) 邵雍 著 紫鑫 译注

出版社:国文出版社

出版时间:2025年09月

ISBN:9787512520073

字数:43千字

#

我们总是忙忙碌碌,在这喧嚣的世界里奔波,都快忘了静下心来思考一些有意义的事儿。当我偶然翻开《渔樵问对》,就像走进了另一个世界。这里面渔夫和樵夫的对话,那可太妙了。他们唠的不仅是普通生活所见,更是天地、阴阳、古今的智慧。这些智慧,我们可能觉得高高在上,离我们挺远,可经他俩一聊,好像突然就变得亲近了,变得让我们普通人也能品出点不一样的滋味儿来。

《渔樵问对》,是北宋邵雍所著,里面讲了一位渔夫和一位樵夫在偶然相遇时的对话,他们只是世间最普通的人。渔夫出没风波,于浩渺烟水间讨生活;樵夫往来山林,在幽篁翠影中谋生计。他们不仅像我们身边的友人,也是智者的化身,是哲理的探寻者与传播者。其对话仿若两条奔腾的思想溪流,汇聚之处,溅起的是关于宇宙、人生、社会、历史等诸多重大命题的智慧水花。

对话先是从百姓的寻常生活入手,抽丝剥茧般层层递进,最终将话题引向了深邃的人生哲学领域,为读者开启了一场从日常烟火迈向精神思辨的奇妙思想之旅。

这正像普通人从平凡的生活出发,因好奇而不断探索,最终走向深度思考人生的过程,对话把这样的成长轨迹具象化,给予我们诸多启示。

看完这本书,我受益匪浅,同时希望能让更多的人知道这本书。现在好多人被各种琐事缠着,被那些花里胡哨的东西迷了眼,没机会好好感受老祖宗留下来的智慧宝藏,所以我决定尽我所能,把它翻译成大白话,让大家能轻松地读懂。让更多的人对《渔樵问对》产生兴趣,跟随两位智者开始思考那些关于人生的问题,并且在生活中运用古人的智慧让自己的生活变得越来越好。但因为本人学识有限,理解和感悟难免有诸多不足之处,敬请广大读者交流商榷。

《渔樵问对》中的人生哲理和我们的生活息息相关,不管你是忙忙碌碌打拼的上班族,还是在学校里读书的学生娃,又或是在家安享晚年的长辈,我都希望你能在《渔樵问对》里受到启发,也许樵夫的问题也是你的问题呢!希望在这里找到能让你心里一动的东西。说不定读完它,你看世界、看自己的眼光都会不一样了呢。

准备好了吗?大家赶紧跟着渔夫和樵夫开启这奇妙的智慧之旅吧!

一 『利害』之辩#

[原]渔者垂钓于伊水之上。

[译]渔夫在伊水边钓鱼。

[原]樵者过之,弛担息肩,坐于磐石之上,而问于渔者,曰:“鱼可钩取乎?”

[译]有一个樵夫路过,放下柴担休息,坐在大石头上,问渔夫:“鱼可以用鱼钩钓到吗?”

[原]曰:“然。”

[译]渔夫回答:“能。”

[原]曰:“钩非饵可乎?”

[译]樵夫又问:“鱼钩上没有鱼饵能钓到鱼吗?”

[原]曰:“否。”

[译]渔夫答:“不能。”

[原]曰:“非钩也,饵也。鱼利食而见害,人利鱼而蒙利,其利同也,其害异也。敢问何故?”

[译]樵夫说:“把鱼钓上来的不是鱼钩而是鱼饵。鱼为了吃食而被害,人却因为得到鱼而获利,二者都是为了得到,但结果不同,请问这是为何?”

[原]曰:“子樵者也,与吾异治,安得侵吾事乎?然亦可以为子试言之。彼之利,犹此之利也;彼之害,亦犹此之害也。子知其小,未知其大。”

[译]渔夫说:“你是樵夫,与我的工作不同,怎能明白我的事呢?我可以给你解释一下。鱼的利与我的利本质相同,鱼的害与我的害也相同。你只看到一点,却未看到全面。”

[原]“鱼之利食,吾亦利乎食也;鱼之害食,吾亦害乎食也。子知鱼终日得食为利,又安知鱼终日不得食为害?如是,则食之害也重,而钩之害也轻。子知吾终日得鱼为利,又安知吾终日不得鱼不为害也?”

[译]“鱼以食为利,我也以食为利;鱼因食受害,我也会因食受害。你只知鱼得到吃食为利,又怎知鱼不停地追求吃食是不是一种伤害呢?所以食的诱惑对鱼的危害大,鱼钩的危害却不是主要的。你只知道我得到鱼为利,又怎知我若终日钓不到鱼不是一种伤害呢?”

[原]“如是,则吾之害也重,鱼之害也轻。以鱼之一身,当人之食,是鱼之害多矣;以人之一身,当鱼之一食,则人之害亦多矣。又安知钓乎大江大海,则无易地之患焉?鱼利乎水,人利乎陆,水与陆异,其利一也。”

[译]“如此看来,我受到的伤害是重的,而鱼的伤害是轻的,鱼的全身成为人的食物,鱼的害大;人的一生只为了钓鱼,把鱼当作唯一的食物,人所受到的害也很多。况且在大江大海钓鱼,还可能有其他祸患。鱼生活在水里,人生活在陆地,水与陆不同,但利害是一样的。”

[原]“鱼害乎饵,人害乎财,饵与财异,其害一也。又何必分乎彼此哉!子之言,体也,独不知用尔。”

[译]“鱼因鱼饵受害,人因财物受害,虽鱼饵与财物不同,但害处是一样的。何必区分彼此呢?你说的只是事物的表象,却不知其根本。”

我们很多时候只看到事物的一面,却看不到事物的全面,同样是追求食物,鱼成了人的餐中食,人却因鱼而吃饱饭。从表面上看是完全不一样的结果,但跳出来看整体是一样的。就像鱼每日都在追求吃食而获得满足,人也是如此,每日奋斗,是为了获得更好的生活。但鱼在追求贪欲时,就算有钩也想尝试而受害。人也因贪欲,过度追求而受到伤害!自以为的获利也许是一种伤害。所以不管是鱼还是人,其实都是一样的,对万事万物的追求一旦过度都会有反向的发展,贪欲过旺必遭反噬。

这个故事就是在提醒我们,好比平常看事儿,不能光看表面就下结论。要把方方面面都考虑进去才行。

生活里好多人都有这样的毛病,看啥都“着急”,看到什么就觉得是什么,却看不到事物的本质。可实际上,每件事背后都跟蜘蛛网一样,有着千丝万缕的联系。事物之间的利害关系都是相互交织、相互影响和相互转化的。有时候表面看着是好事,没准儿背后藏着坏的一面;反过来,看起来倒霉的事,说不定也能引出好的结果来。很多事都有它内在的规律,就像鱼为什么容易被鱼饵诱惑,人又为什么为了利益愿意冒险,这里面藏着人性,生活里的那些道理,得用心去发掘、去感悟。

一些人评价别人或者看待事物的时候,总是太片面了。例如,看到一个明星有才华,就觉得他很优秀;结果过一段时间他出轨了,又觉得他很可恶;后来他有一次做公益,帮助了很多人,又觉得他善良有爱心;可事后传出他做公益是为了炒作,又变得很讨厌他。对同一个人在不同时候就有很多看法和评判,以一面和一时就定论岂不是很片面。又如,和别人闹了别扭,光想着自己受委屈了,认为对方全是错,如果站在对方角度也琢磨一下,也许就能理解事件的真相,并能更好地解决问题。总之,遇到事仔细想想,把方方面面都考虑全了,才能少走弯路,把日子过得更明白,不被那些表面现象给糊弄住了。

这种智慧,可让人心胸开阔、头脑清晰,更能综合考量与事件相关的各种因素,才能突破表象的局限,对事件有完整、透彻且准确的理解,洞察到事物背后的真相与脉络,进而做出明智的应对举措,届时你的人生就能豁然开朗。

身边故事#

我有个同学在一家互联网公司工作,他想以最快的速度当上领导,自己就能说话管用,于是从入职起就兢兢业业。他对每一个项目都全力以赴,力求做到最好。经过几年的努力,他成为公司里最年轻的经理。一开始,他满心欢喜,觉得自己的付出得到了认可,未来充满了希望。升职后的日子却并没有想象的那么美好。新职位带来了更多的责任和更大的压力,他需要管理一个更大的团队,协调各种复杂的关系。团队里的一些老员工对他的升职并不服气,在工作中故意不配合,对他的安排阳奉阴违,有时还给他制造麻烦,故意拖延进度或者提供不准确的信息。

升职也让他陷入了困境,每天要花费大量的精力去处理团队内部的矛盾和外部的合作问题。工作压力越来越大,他经常失眠,甚至开始怀疑自己的能力。也没有了当初的自信与活力。他深刻地认识到,自己所追求的名利并不一定都是美好的,同时也会带来更多的困难和挑战。

人呀,要知道,你追求什么,什么就会伤害你;你在乎什么,就会被什么所控制。有个朋友,从小就梦想拥有一辆豪车。他努力攒钱,又向家人朋友借钱凑了首付,终于买到了心仪的豪车。一开始,他开着豪车很有成就感,四处炫耀,觉得是自己拥有了它,殊不知自己也被它所控。不仅有债务的压力,还有豪车的保养费和油耗都非常高,动不动修理保养,都成了烦恼和压力。他还不得不减少其他方面的开支,舍不得吃喝,甚至放弃了一些原本的爱好和社交活动。当热爱变淡,他便开始后悔当初为了得到这辆豪车而付出的代价。

二 『水火』之辩#

[原]樵者又问曰:“鱼可生食乎?”

[译]樵夫又问:“鱼能生吃吗?”

[原]曰:“烹之可也。”

[译]渔夫答:“煮熟可以吃。”

[原]曰:“必吾薪济子之鱼乎?”

[译]樵夫问:“必须用我的柴来煮你的鱼吗?”

[原]曰:“然。”

[译]渔夫答:“是的。”

[原]曰:“吾知有用乎子矣。”

[译]樵夫说:“我知道我对你有用了。”

[原]曰:“然则子知子之薪,能济吾之鱼,不知子之薪所以能济吾之鱼也。薪之能济鱼久矣,不待子而后知。苟世未知火之能用薪,则子之薪虽积丘山,独且奈何哉?”

[译]渔夫说:“你知道你的柴能煮我的鱼,却不知你的柴为何能煮我的鱼。柴能煮鱼由来已久,在你之前世人就知道,若世人不知柴的作用是火,你的柴堆积如山又有什么用呢?”

22关于ImGui

第 22 集是 Cherno 系列中非常爽的一集,因为它让你告别了“硬编码”坐标的痛苦,转而使用可视化 UI 来直接操控显卡里的数据。

代码#

https://github.com/ocornut/imgui 下载1.6版本,和视频中保持一致

根目录下所有.h和.cpp文件,以及examples\opengl3_example文件夹中的.h和.cpp文件都复制到项目中 不要include main.cpp文件

修改imgui_impl_glfw_gl3.cpp中开头的 #include <GL/gl3w.h>#include <GL/glew.h>

添加头文件#


#include "imgui_1.60/imgui.h"
#include "imgui_1.60/imgui_impl_glfw_gl3.h"

shader后的修改#


		
		//=======imgui添加============
		//imGui创建上下文
		// Setup ImGui binding
		ImGui::CreateContext();
		//windows ,告诉 ImGui 你的程序窗口在哪里
		//允许 ImGui 自动接管窗口的回调函数(比如鼠标点击、滚轮滚动)
		ImGui_ImplGlfwGL3_Init(window, true);
		//设置 UI 的主题配色
		ImGui::StyleColorsDark();

		//解决白屏问题2:在进入 while 循环前,手动清一次屏并交换缓冲
		//设置“清除颜色”
		glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
		//用上面选好的“油漆”填满整个颜色缓冲区(Color Buffer)
		glClear(GL_COLOR_BUFFER_BIT);
		//交换缓冲区
		glfwSwapBuffers(window); // 这一步把“深绿色”推送到显卡
		//解决白屏问题3:最后才显示窗口
		glfwShowWindow(window);


		//=======imgui添加============
		bool show_demo_window = true;
		bool show_another_window = false;
		ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f);

		glm::vec3 translation(200, 200, 0);

		
		// 游戏/渲染主循环
		while (!glfwWindowShouldClose(window))
		{
			// 清理屏幕颜色缓冲区
			renderer.Clear();

			//=======imgui添加============
			ImGui_ImplGlfwGL3_NewFrame();


			//必须先绑定program,因为vao不负责着色器程序的切换
			//va.Bind();

			if (r > 1.0f)
				increment = -0.05f;
			else if (r < 0.0f)
				increment = 0.05f;

			r += increment;

			//=======imgui添加============
			//绘图前重新绑定
			shader.Bind();
			//imgui:这里吧mvp相关代码移到while循环中
			//向右向上移动200
			glm::mat4 model = glm::translate(glm::mat4(1.0f), translation);

			glm::mat4 mvp = proj * view * model;
			shader.SetUniformMat4f("u_MVP", mvp);

			//=======imgui添加============
			//在u_Color的位置上设置数值
			//shader.SetUniform4f("u_Color", r, 0.3f, 0.0f, 1.0f);
			//========设置uniform========

			renderer.Draw(va, ib, shader);

			//=======imgui添加============
			//小窗口
			{
				static float f = 0.0f;
				static int counter = 0;
				ImGui::Text("Hello, world!");                           // Display some text (you can use a format string too)
				//这里传入translation.x的地址,imgui会在这个地址上修改值
				//第一个参数是标签,表示在imgui界面上显示的名字,第二个参数是要修改的值的地址,后面是这个值的范围
				ImGui::SliderFloat3("Translation", &translation.x, 0.0f, 960.0f);            // Edit 1 float using a slider from 0.0f to 1.0f  
				ImGui::SliderFloat("float", &f, 0.0f, 1.0f);            // Edit 1 float using a slider from 0.0f to 1.0f    
				ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats representing a color

				ImGui::Checkbox("Demo Window", &show_demo_window);      // Edit bools storing our windows open/close state
				ImGui::Checkbox("Another Window", &show_another_window);

				if (ImGui::Button("Button"))                            // Buttons return true when clicked (NB: most widgets return true when edited/activated)
					counter++;
				ImGui::SameLine();
				ImGui::Text("counter = %d", counter);

				ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
			}

			//imgui:这里吧mvp相关代码移到while循环中
			//向右向上移动200
			glm::mat4 model = glm::translate(glm::mat4(1.0f), translation);

			glm::mat4 mvp = proj * view * model;
			shader.SetUniformMat4f("u_MVP", mvp);


			//=======imgui添加============
			ImGui::Render();

			ImGui_ImplGlfwGL3_RenderDrawData(ImGui::GetDrawData());

			// 交换前后缓冲区以刷新画面
			glfwSwapBuffers(window);

			// 轮询并处理窗口事件(如键盘输入、关闭动作)
			glfwPollEvents();
		}

		//最后解绑vao
		//glBindVertexArray(0);
	}

	//=======imgui添加============
	ImGui_ImplGlfwGL3_Shutdown();

	// 退出前清理资源
	//glfwTerminate会破坏Context,导致析构函数中的glGetError()
	//返回一个OpenGL错误
	glfwTerminate();
	return 0;