001---OpenGL 圖形專有名詞與坐標(biāo)解析

OpenGL簡介

  • OpenGLOpen Graphics Library)是?個(gè)跨編程語?岔霸、跨平臺的編程圖形程序接?缤至,它將計(jì)
    算機(jī)的資源抽象稱為?個(gè)個(gè)OpenGL的對象撕贞,對這些資源的操作抽象為?個(gè)個(gè)的OpenGL指令.

  • OpenGL ESOpenGL for Embedded Systems)是 OpenGL 三維圖形 API 的?集决采,針對?機(jī)域滥、
    PDA和游戲主機(jī)等嵌?式設(shè)備?設(shè)計(jì)靡挥,去除了許多不必要和性能較低的API接?.

  • DirectX 是由很多API組成的序矩,DirectX并不是?個(gè)單純的圖形API. 最重要的是DirectX是屬于
    Windows上?個(gè)多媒體處理API.并不?持Windows以外的平臺,所以不是跨平臺框架. 按照性
    質(zhì)分類,可以分為四?部分跋破,顯示部分簸淀、聲?部分、輸?部分和?絡(luò)部分.

  • Metal : Metal: Apple為游戲開發(fā)者推出了新的平臺技術(shù)Metal毒返,該技術(shù)能夠?yàn)?/code>3D圖 像提?10倍的渲染性能.MetalApple為了解決3D`渲染?推出的框架.

OpenGL /OpenGL ES/ Metal 在任何項(xiàng)?中解決問題的本質(zhì)
就是利?GPU芯?來?效渲染圖形圖像.圖形APIiOS開發(fā)者唯?接近GPU的?式

OpenGL 作用

  • 游戲開發(fā)中租幕,對于游戲場景/人物的渲染
  • 音視頻開發(fā)者中,視頻解碼后的數(shù)據(jù)渲染
  • 地圖開發(fā)中拧簸,地圖數(shù)據(jù)的渲染
  • 動畫開發(fā)中劲绪,實(shí)現(xiàn)動畫的繪制
  • 視頻處理中,視頻加上濾鏡效果

OpenGL 專業(yè)名詞

OpenGL 上下?(context)

在應(yīng)?程序調(diào)?任何OpenGL的指令之前盆赤,需要安排?先創(chuàng)建?個(gè)OpenGL的上下?贾富。這個(gè)上下?是?個(gè)?常龐?的狀態(tài)機(jī),保存了OpenGL中的各種狀態(tài)牺六,這也是OpenGL指令執(zhí)?的基礎(chǔ)

OpenGL的函數(shù)不管在哪個(gè)語?中颤枪,都是類似C語??樣的?向過程的函數(shù),本質(zhì)上都是對OpenGL上下?這個(gè)龐?的狀態(tài)機(jī)中的某個(gè)狀態(tài)或者對象進(jìn)?操作淑际,當(dāng)然你得?先把這個(gè)對象設(shè)置為當(dāng)前對象畏纲。因此扇住,通過對OpenGL指令的封裝,是可以將OpenGL的相關(guān)調(diào)?封裝成為?個(gè)?向?qū)ο蟮膱D形API的

由于OpenGL上下?是?個(gè)巨?的狀態(tài)機(jī)霍骄,切換上下?往往會產(chǎn)?較?的開銷台囱,但是不同的繪制模塊,可能需要使?完全獨(dú)?的狀態(tài)管理读整。因此簿训,可
以在應(yīng)?程序中分別創(chuàng)建多個(gè)不同的上下?,在不同線程中使?不同的上下?米间,上下?之間共享紋理强品、緩沖區(qū)等資源。這樣的?案屈糊,會?反復(fù)切換 上下?的榛,或者?量修改渲染狀態(tài),更加合理?效的.

OpenGL 狀態(tài)機(jī)

狀態(tài)機(jī)是理論上的?種機(jī)器.這個(gè)?常難以理解.所以我們把這個(gè)狀態(tài)機(jī)這么理解.狀態(tài)機(jī)描述了?個(gè)對象在其?命周期內(nèi)所經(jīng)歷的各種狀態(tài)逻锐,狀態(tài)間的轉(zhuǎn)變夫晌,發(fā)?轉(zhuǎn)變的動因,條件及轉(zhuǎn)變中所執(zhí)?的活動昧诱∠恚或者說,狀態(tài)機(jī)是?種?為盏档,說明對象在其?命周期中響應(yīng)事件所經(jīng)歷的狀態(tài)序列以及對那些狀態(tài)事件的響應(yīng)凶掰。因此具有以下特點(diǎn):

1.  有`記憶功能`,能記住其當(dāng)前的狀態(tài)
2.  可以`接收輸?`蜈亩,根據(jù)輸?的內(nèi)容和??的原先狀態(tài)懦窘,修改??當(dāng)前狀態(tài),并且可以有對應(yīng)輸出
    3.  當(dāng)進(jìn)?`特殊狀態(tài)(停機(jī)狀態(tài))`的時(shí)候稚配,變不再接收輸?畅涂,停??作;
  • 類推到OpenGL 中來,可以這么理解:

    • OpenGL可以記錄??的狀態(tài)(如當(dāng)前所使?的顏?道川、是否開啟了混合功能等)
    • OpenGL可以接收輸?(當(dāng)調(diào)?OpenGL函數(shù)的時(shí)候毅戈,實(shí)際上可以看成OpenGL在接收我們的輸?),如我們調(diào)?glColor3f愤惰,則OpenGL接收到這個(gè)輸?后會修改??的“當(dāng)前顏?”這個(gè)狀態(tài).
    • OpenGL可以進(jìn)?停?狀態(tài),不再接收輸?赘理。在程序退出前宦言,OpenGL總會先停??作的

渲染(Rendering)

  • 圖形/圖像數(shù)據(jù)轉(zhuǎn)換成3D空間圖像操作叫做渲染(Rendering)

頂點(diǎn)數(shù)組(VertexArray)和頂點(diǎn)緩沖區(qū)(VertexBuffer)

  • 畫圖?般是先畫好圖像的?架,然后再往?架??填充顏?商模,這對于
    OpenGL也是?樣的奠旺。頂點(diǎn)數(shù)據(jù)就是要畫的圖像的?架蜘澜,和現(xiàn)實(shí)中不同的
    是,OpenGL中的圖像都是由圖元組成响疚。在OpenGLES中鄙信,有3種類型的圖
    元:點(diǎn)忿晕、三?形装诡。
  • 那這些頂點(diǎn)數(shù)據(jù)最終是存儲在哪?的呢?

開發(fā)者可以選擇設(shè)定函數(shù)指針践盼,在調(diào)?繪制?法的時(shí)候鸦采,直接由內(nèi)存?zhèn)?頂點(diǎn)數(shù) 據(jù)嚷缭,也就是說這部分?jǐn)?shù)據(jù)之前是存儲在內(nèi)存當(dāng)中的拜鹤,被稱為頂點(diǎn)數(shù)組。?
性能更?的做法是尿褪,提前分配?塊顯存肄程,將頂點(diǎn)數(shù)據(jù)預(yù)先傳?到顯存當(dāng)
中锣吼。這部分的顯存,就被稱為頂點(diǎn)緩沖區(qū)

  • 頂點(diǎn)指的是我們在繪制?個(gè)圖形時(shí),它的頂點(diǎn)位置數(shù)據(jù).?這個(gè)數(shù)據(jù)可以直接存儲在數(shù)組中或者將其緩存到GPU內(nèi)存中
  • 劃重點(diǎn):
    1. 3種類型的圖元:點(diǎn),線,三角形
    2. 頂點(diǎn)數(shù)組(VertexArray)在內(nèi)存中
    3. 頂點(diǎn)緩沖區(qū)(VertexBuffer)在緩沖中

管線

OpenGL下渲染圖形,就會有經(jīng)歷?個(gè)?個(gè)節(jié)點(diǎn).?這樣的操作可以理解管線.?家可以想象成流?線.每個(gè)任務(wù)類似流?線般執(zhí)?.任務(wù)之間有先后順序. 管線是?個(gè)抽象的概念蓝厌,之所以稱之為管線是因?yàn)?code>顯卡在處理數(shù)據(jù)的時(shí)候是按照?個(gè)固定的順序來的玄叠,?且嚴(yán)格按照這個(gè)順序。就像?從?根管?的?端流到另?端褂始,這個(gè)順序是不能打破的.

  • 劃重點(diǎn):
  1. 任務(wù)嚴(yán)格按順序依次執(zhí)行.

固定管線/存儲著?器

  • 在早期的OpenGL版本,它封裝了很多種著?器程序塊內(nèi)置的?段包含了光照诸典、坐標(biāo)變換、裁剪等等諸多功能的固定shader程序來完成,來幫助開發(fā)者來完成圖形的渲染. ?開發(fā)者只需要傳?相應(yīng)的參數(shù),就能快速完成圖形的渲染. 類似于iOS開發(fā)會封裝很多API,?我們只需要調(diào)?,就可以實(shí)現(xiàn)功能.不需要關(guān)注底層實(shí)現(xiàn)原理.

  • 但是由于OpenGL的使?場景?常豐富,固定管線存儲著?器?法完成每?個(gè)業(yè)務(wù).這時(shí)將相關(guān)部分開放成可編程.

著?器程序Shader

  • 就全?的將固定渲染管線架構(gòu)變?yōu)榱?code>可編程渲染管線崎苗。
  • 因此狐粱,OpenGL在實(shí)際調(diào)?繪制函數(shù)之前,還需要指定?個(gè)shader編譯成的著?器程序胆数。常?的著?器主要有頂點(diǎn)著?器(VertexShader)肌蜻,?段著?器(FragmentShader)/像素著?器(PixelShader),?何著?器(GeometryShader)必尼,曲?細(xì)分著?器(TessellationShader)蒋搜。?段著?器和像素著?器只是在OpenGLDX中的不同叫法?已∨欣颍可惜的是豆挽,直到OpenGLES 3.0,依然只?持了頂點(diǎn)著?器?段著?器這兩個(gè)最基礎(chǔ)的著?器券盅。

  • OpenGL在處理shader時(shí)帮哈,和其他編譯器?樣。通過編譯锰镀、鏈接等步驟娘侍,?成了著?器程序(glProgram)咖刃,著?器程序同時(shí)包含了頂點(diǎn)著?器?段著?器的運(yùn)算邏輯。在OpenGL進(jìn)?繪制的時(shí)候憾筏,?先由頂點(diǎn)著?器對傳?的頂點(diǎn)數(shù)據(jù)進(jìn)?算再通過圖元裝配嚎杨,將頂點(diǎn)轉(zhuǎn)換為圖元。然后進(jìn)?光柵化氧腰,將圖元這種?量圖形枫浙,轉(zhuǎn)換為柵格化數(shù)據(jù)最后容贝,將柵格化數(shù)據(jù)傳??段著?器中進(jìn)?運(yùn)算自脯。?段著?器會對柵格化數(shù)據(jù)中的每?個(gè)像素進(jìn)?運(yùn)算,并決定像素的顏?.

劃重點(diǎn):

  1. 將固定渲染管線架構(gòu)變成為了可編程渲染管線
  2. 常見的著色器主要有頂點(diǎn)著色器,片段著色器/像素著色器,幾何著色,曲面細(xì)分著色器.
  3. OPenGL ES只支持頂點(diǎn)著色器和片段著色器.
  4. OpenGL 通過編譯,鏈接等步驟,將生成著色器程序.
  5. 在OpenGL進(jìn)行繪制的時(shí)候,有頂點(diǎn)著色器對傳入的頂點(diǎn)數(shù)據(jù)進(jìn)行運(yùn)算.在通過圖元裝配,將頂點(diǎn)轉(zhuǎn)換為圖元.之后進(jìn)行光柵化,將圖元這種矢量圖形,轉(zhuǎn)換為柵格化數(shù)據(jù).最后,將柵格化數(shù)據(jù)傳入片段著色器中進(jìn)行運(yùn)算.片段著色器會對柵格化數(shù)據(jù)中的每一個(gè)像素進(jìn)行運(yùn)算,并決定像素的顏色.

頂點(diǎn)著?器VertexShader

  • ?般?來處理圖形每個(gè)頂點(diǎn)變換(旋轉(zhuǎn)/平移/投影等)

  • 頂點(diǎn)著?器是OpenGL中?于計(jì)算頂點(diǎn)屬性的程序斤富。頂點(diǎn)著?器是逐頂點(diǎn)運(yùn)算的程序膏潮,也就是說每個(gè)頂點(diǎn)數(shù)據(jù)都會執(zhí)??次頂點(diǎn)著?器,當(dāng)然這是并?的满力,并且頂點(diǎn)著?器運(yùn)算過程中?法訪問其他頂點(diǎn)的數(shù)據(jù).

  • ?般來說典型的需要計(jì)算的頂點(diǎn)屬性主要包括頂點(diǎn)坐標(biāo)變換焕参、逐頂點(diǎn)光照運(yùn)算等等。頂點(diǎn)坐標(biāo)由?身坐標(biāo)系轉(zhuǎn)換到歸?化坐標(biāo)系的運(yùn)算油额,就是在這?發(fā)?的叠纷。

?元著?器程序FragmentShader

  • ?般?來處理圖形中 每個(gè)像素點(diǎn)顏?計(jì)算填充

  • ?段著?器OpenGL中?于計(jì)算?段(像素)顏?的程序潦嘶。?段著?器是逐像素運(yùn)算的程序涩嚣,也就是說每個(gè)像素都會執(zhí)??次?段著?器,當(dāng)然也是并?的.

  • 片元著色器(Fragment Shader)被稱為像素著色器(Pixel Shader)掂僵,但片元著色器是一個(gè)更合適的名字航厚,

因?yàn)榇藭r(shí)的片元并不是一個(gè)真正意義上的像素

GLSL(OpenGL Shading Language)

  • OpenGL著?語?(OpenGL Shading Language)是?來在OpenGL中著?編程的語?,也即開發(fā)?員寫的短?的?定義程序锰蓬,他們是在圖形卡的GPU (Graphic Processor Unit圖形處理單元)上執(zhí)?的幔睬,代替了固定的渲染管線的?部分,使渲染管線中不同層次具有可編程性芹扭。?如:視圖轉(zhuǎn)換麻顶、投影轉(zhuǎn)換等。GLSL(GL Shading Language)的著?器代碼分成2個(gè)部分:Vertex Shader(頂點(diǎn)著?器)和Fragment(?斷著?器).

光柵化Rasterization

  • 是把頂點(diǎn)數(shù)據(jù)轉(zhuǎn)換為?元的過程舱卡,具有將轉(zhuǎn)化為?個(gè)個(gè)柵格組成的圖象的作?辅肾,特點(diǎn)是每個(gè)元素對應(yīng)幀緩沖區(qū)中的?像素
  • 光柵化就是把頂點(diǎn)數(shù)據(jù)轉(zhuǎn)換為?元的過程轮锥。?元中的每?個(gè)元素對應(yīng)于幀緩沖區(qū)中的?個(gè)像素宛瞄。
  • 光柵化其實(shí)是?種將?何圖元變?yōu)?code>?維圖像的過程。該過程包含了兩部分的?作。第?部分?作:決定窗?坐標(biāo)中的哪些整型柵格區(qū)域被基本圖元占?份汗;第?部分?作:分配?個(gè)顏?值和?個(gè)深度值到各個(gè)區(qū)域光柵化過程產(chǎn)?的是?元.
  • 把物體的數(shù)學(xué)描述以及與物體相關(guān)的顏?信息轉(zhuǎn)換為屏幕上?于對應(yīng)位置的像素及?于填充像素的顏?蝴簇,這個(gè)過程稱為光柵化杯活,這是?個(gè)將模擬信號轉(zhuǎn)化為離散信號的過程.

紋理(Texture)

  • 紋理可以理解為圖?. ?家在渲染圖形時(shí)需要在其編碼填充圖?,為了使得場景更加逼真.?這?使?的圖?,就是常說的紋理.但是在OpenGL,我們更加習(xí)慣叫紋理,?不是圖?.

混合(Blending)

  • 在測試階段之后,如果像素依然沒有被剔除熬词,那么像素的顏?將會和幀緩沖區(qū)中顏?附著上的顏?進(jìn)?混合旁钧,混合的算法可以通過OpenGL的函數(shù)進(jìn)?指定。但是OpenGL提供的混合算法是有限的互拾,如果需要更加復(fù)雜的混合算法歪今,?般可以通過像素著?器進(jìn)?實(shí)現(xiàn),當(dāng)然性能會?原?的混合算法差?些.

變換矩陣(Transformation)

  • 例如圖形想發(fā)?平移,縮放,旋轉(zhuǎn)變換.就需要使?變換矩陣.

投影矩陣(Projection)

  • ?于將3D坐標(biāo)轉(zhuǎn)換為?維屏幕坐標(biāo),實(shí)際線條也將在?維坐標(biāo)下進(jìn)?繪制

渲染上屏/交換緩沖區(qū)(SwapBuffer)

  • 渲染緩沖區(qū)?般映射的是系統(tǒng)的資源?如窗?颜矿。如果將圖像直接渲染到窗?對應(yīng)的渲染緩沖區(qū)寄猩,則可以將圖像顯示到屏幕上
  • 但是骑疆,值得注意的是田篇,如果每個(gè)窗?只有?個(gè)緩沖區(qū),那么在繪制過程中屏幕進(jìn)?了刷新箍铭,窗?可能顯示出不完整的圖像
  • 為了解決這個(gè)問題泊柬,常規(guī)的OpenGL程序?少都會有兩個(gè)緩沖區(qū)。顯示在屏幕上的稱為屏幕緩沖區(qū)诈火,沒有
    顯示的稱為離屏緩沖區(qū)兽赁。在?個(gè)緩沖區(qū)渲染完成之后,通過將屏幕緩沖區(qū)和離屏緩沖區(qū)交換冷守,實(shí)現(xiàn)圖像
    在屏幕上的顯示
    刀崖。
  • 由于顯示器的刷新?般是逐?進(jìn)?的,因此為了防?交換緩沖區(qū)的時(shí)候屏幕上下區(qū)域的圖像分屬于兩個(gè)不同的幀教沾,因此交換?般會等待顯示器刷新完成的信號蒲跨,在顯示器兩次刷新的間隔中進(jìn)?交換,這個(gè)信號就被稱為垂直同步信號授翻,這個(gè)技術(shù)被稱為垂直同步.
  • 使?了雙緩沖區(qū)垂直同步技術(shù)之后或悲,由于總是要等待緩沖區(qū)交換之后再進(jìn)?下?幀的渲染,使得幀率?法完全達(dá)到硬件允許的最??平堪唐。為了解決這個(gè)問題巡语,引?了三緩沖區(qū)技術(shù),在等待垂直同步時(shí)淮菠,來回交替渲染兩個(gè)離屏的緩沖區(qū)男公,?垂直同步發(fā)?時(shí),屏幕緩沖區(qū)和最近渲染完成的離屏緩沖區(qū)交換合陵,實(shí)現(xiàn)充分利?硬件性能的?的.

劃重點(diǎn):

  1. 如果每個(gè)窗?只有?個(gè)緩沖區(qū)枢赔,若在繪制過程中屏幕進(jìn)?了刷新澄阳,窗?可能顯示出不完整的圖像。為了解決這個(gè)問題踏拜,常規(guī)的OpenGL程序?少都會有兩個(gè)緩沖區(qū)碎赢。
  2. 垂直同步:由于顯示器的刷新?般是逐?進(jìn)?的,為了防?交換緩沖區(qū)的時(shí)候屏幕上下區(qū)域的圖像分屬于兩個(gè)不同的幀速梗,交換一般會等待顯示器刷新完成的信號肮塞,在顯示器器兩次刷新的間隔中進(jìn)?交換,這個(gè)信號就被稱為垂直同步信號姻锁,這個(gè)技術(shù)被稱為垂直同步枕赵。
  3. 三緩沖區(qū)技術(shù):使用了雙緩沖區(qū)垂直同步技術(shù)之后,由于總是要等待緩沖區(qū)交換之后再進(jìn)?下?幀的渲染位隶,使得幀率無法完全達(dá)到硬件允許的最??平拷窜。為了解決這個(gè)問題,引?了三緩沖區(qū)技術(shù)钓试。在等待垂直同步時(shí)装黑,來回交替渲染兩個(gè)離屏的緩沖區(qū),?垂直同步發(fā)?生時(shí)弓熏,屏幕緩沖區(qū)和最近渲染完成的離屏緩沖區(qū)交換恋谭,實(shí)現(xiàn)充分利利?硬件性能的?的。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末挽鞠,一起剝皮案震驚了整個(gè)濱河市疚颊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌信认,老刑警劉巖材义,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異嫁赏,居然都是意外死亡其掂,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進(jìn)店門潦蝇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來款熬,“玉大人,你說我怎么就攤上這事攘乒∠团#” “怎么了?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵则酝,是天一觀的道長殉簸。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么般卑? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任武鲁,我火速辦了婚禮,結(jié)果婚禮上椭微,老公的妹妹穿的比我還像新娘洞坑。我一直安慰自己,他們只是感情好蝇率,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著刽沾,像睡著了一般本慕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上侧漓,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天锅尘,我揣著相機(jī)與錄音,去河邊找鬼布蔗。 笑死藤违,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的纵揍。 我是一名探鬼主播顿乒,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼泽谨!你這毒婦竟也來了璧榄?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤吧雹,失蹤者是張志新(化名)和其女友劉穎骨杂,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體雄卷,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡搓蚪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了丁鹉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片妒潭。...
    茶點(diǎn)故事閱讀 39,779評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖鳄炉,靈堂內(nèi)的尸體忽然破棺而出杜耙,到底是詐尸還是另有隱情,我是刑警寧澤拂盯,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布佑女,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏团驱。R本人自食惡果不足惜摸吠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望嚎花。 院中可真熱鬧寸痢,春花似錦、人聲如沸紊选。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽兵罢。三九已至献烦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間卖词,已是汗流浹背巩那。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留此蜈,地道東北人即横。 一個(gè)月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像裆赵,于是被迫代替她去往敵國和親东囚。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評論 2 354