GPUImage 學(xué)習(xí)一

最近在做視頻處理方面的工作蘸鲸,然后接觸到了GPUImage這個開源庫,這是庫使用的是OpenGLES這套圖像處理方案。初使用時氮唯,一臉懵逼,雖然大學(xué)時學(xué)過一些圖像處理方面的知識驰坊,因為不是主課程,老師講得也比較粗糙哮独,再加上當(dāng)時也沒有認(rèn)真研究拳芙,所以基本是都還給老師了察藐。

首先熟悉下基本的概念

  • CPU 與 GPU

電腦或者手機上做圖像處理有很多方式,但是目前為止最高效的方法是有效地使用圖形處理單元舟扎,或者叫GPU分飞。你的手機包含兩個不同的處理單元,CPU和GPU浆竭。CPU是個多面手浸须,并且不得不處理所有的事情惨寿,而GPU則可以集中來處理好一件事情邦泄,就是并行地做浮點運算。事實上裂垦,圖像處理和渲染就是在將要渲染到窗口上的像素上做許許多多的浮點運算顺囊。

通過有效的利用GPU,可以成百倍甚至上千倍地提高手機上的圖像渲染能力蕉拢。如果不是基于GPU的處理特碳,手機實時高清視頻濾鏡是不現(xiàn)實,甚至不可能的晕换。

  • 著色器(shader)

著色器(shader)是我們利用這種能力的工具午乓。著色器是用著色語言寫的小的,基于C語言的程序≌⒆迹現(xiàn)在有許多種著色語言益愈,但你如果做OS X 或者iOS開發(fā)的話,你應(yīng)該專注于OpenGL著色語言夷家,或者叫GLSL蒸其。你可以將GLSL的理念應(yīng)用到其他的更專用的語言(比如Metal)上去。這里我們即將即將介紹的概念與和Core Image中的自定義核矩陣有著很好的對應(yīng)库快,盡管它們在語法上有一些不同摸袁。

什么是著色器
在OpenGL ES 中你必須創(chuàng)建兩種著色器“頂點著色器(vertex shaders)和片段著色器(fragment shaders)。這兩種著色器是一個完整程序的兩半义屏,你不能僅僅創(chuàng)建其中任何一個靠汁;想創(chuàng)建一個完整的著色程序,兩個都是必須存在的闽铐。

頂點著色器定義了在2D或者3D場景中幾何圖形是如何處理的蝶怔。一個頂點指的是2D或者3D空間中的一個點。在圖像處理中阳啥,有四個頂點:每一個頂點代表圖像的一個角添谊。頂點著色器設(shè)置頂點的位置,并且把位置和紋理坐標(biāo)這樣的參數(shù)發(fā)送到片段著色器察迟。

然后GPU使用片段著色器在對象或者說圖片的每一個像素上進(jìn)行計算斩狱,最終計算出每個像素的最終顏色耳高。圖片,歸根結(jié)底所踊,實際上僅僅是數(shù)據(jù)的集合泌枪。圖片的文檔包含每一個像素的各個顏色分量和像素透明度的值。因為對每一個像素秕岛,算式是相同的碌燕,GPU可以流水線作業(yè)這個過程,從而更加有效的進(jìn)行處理继薛。使用正確優(yōu)化過的著色器修壕,在GPU上進(jìn)行處理,將使你獲得百倍于在CPU上用同樣的過程進(jìn)行圖像處理的效率遏考。

http://www.bkjia.com/IOSjc/1089406.html

類型說明

然后源碼里面一堆的變量類型就夠我無從下眼了慈鸠,這是神馬神馬呢?于是開始一點點的啃灌具,下面就來學(xué)學(xué)基本類型吧青团。

首先參考這篇文章
http://blog.csdn.net/hgl868/article/details/7846269

  • 基本數(shù)據(jù)類型
Type(類型) 中文意思 Meaning
void 沒有返回值或空參數(shù)列表的函數(shù) for functions that do not return a value or for an empty parameter list
bool 一種有條件的類型,取真或假的值咖楣。 a conditional type,taking on values of true or false
int 一個有符號整數(shù) a signed integer
float 單浮點數(shù)標(biāo)量 a single floating-point scalar
vec2 雙分量浮點向量 a two component floating-point vector
vec3 三分量浮點向量 a three component floating-point vector
vec4 四分量浮點向量 a four component floating-point vector
bvec2 雙分量布爾向量 a tow component Boolean vector
bvec3 三分量布爾向量 a three component Boolean vector
bvec4 四分量布爾向量 a four component Boolean vector
ivec2 雙分量整數(shù)向量 a tow component integer vector
ivec3 三分量整數(shù)向量 a three component integer vector
ivec4 四分量整數(shù)向量 a four component integer vector
mat2 2x2 浮點矩陣 a 2x2 floating-point matrix
mat3 3x3浮點矩陣 a 3x3 floating-point matrix
mat4 4x4浮點矩陣 a 4x4 floating-point matrix
sampler2D 用于訪問2D紋理的句柄 a handle for accessing a 2D texture
samplerCube 訪問立方體映射紋理的句柄 a handle for accessing a cube mapped texture
  • 存儲修飾符
Qualifier 中文意思 Meaning
<none:default> 本地讀/寫內(nèi)存督笆,或函數(shù)的輸入?yún)?shù) local read/write memory, or an input parameter to a function
const 常數(shù),或只讀的函數(shù)參數(shù)诱贿。 a complied-time constant, or a function parameter that is read-only
attribute 頂點著色器與每個頂點數(shù)據(jù)的OpenGL ES之間的鏈接 linkage between a vertex shader and OpenGL ES for per-vertex data
uniform 值不會隨著原始進(jìn)程的變化而變化娃肿,制服構(gòu)成著色器、OpenGL ES和應(yīng)用程序之間的鏈接瘪松。 value does not change across the primitive being progressed, uniforms form the linkage between a shader,OpenGL ES,and the application
varying 用于插值數(shù)據(jù)的頂點著色器和片段著色器之間的鏈接 linkage between a vertex shader and a fragment shader for interpolated data
  • 精度修飾符
Qualifier 中文意思 Meaning
highp 滿足上面所描述的頂點語言的最低要求咸作。 Satisfies the minimum requirements for the vertex language discribed above.Optional in the fragment language
mediump 滿足最低要求以上的片段的語言。它的射程和精度必須大于或小于或在lowP提供同時提供相同highp Satisfies the minimum requirements ablove for the fragment language.It's range and precision has to be greater than or the same as provided by lowp and less than or the same as provided by highp.
lowp 范圍和精度可以小于中等宵睦,但仍然打算代表任何顏色通道的所有顏色值记罚。 Range and precision that can be less than medium,but still intended to represent all color values for any color channel
  • 在頂點語言中有如下預(yù)定義的全局默認(rèn)精度語句:
     precision highp float;
     precision highp int;
     precision lowp sampler2D;
     precision lowp samplerCube;
  • 在片元語言中有如下預(yù)定義的全局默認(rèn)精度語句:
    precision mediump int;
    precision lowp sampler2D;
    precision lowp samplerCube;

GPUImage中引用的文件說明

/*? output為輸出源
? intput為輸入源
? filter為濾鏡
*/

// Base classes
#import "GPUImageContext.h"                 //是GPUImage對OpenGL ES上下文的封裝,添加了GPUImage相關(guān)的上下文壳嚎,比如說Program的使用緩存桐智,處理隊列,CV紋理緩存等
#import "GPUImageOutput.h"                  //輸出
#import "GPUImageView.h"                    //GPUImageView是響應(yīng)鏈的終點烟馅,一般用于顯示GPUImage的圖像
#import "GPUImageVideoCamera.h"             //攝像頭-視頻流
#import "GPUImageStillCamera.h"             //攝像頭-照相
#import "GPUImageMovie.h"                   //視頻
#import "GPUImagePicture.h"                 //圖片
#import "GPUImageRawDataInput.h"            //原始數(shù)據(jù)輸入
#import "GPUImageRawDataOutput.h"           //原始數(shù)據(jù)輸出
#import "GPUImageMovieWriter.h"             //電影制作
#import "GPUImageFilterPipeline.h"          //濾鏡管道
#import "GPUImageTextureOutput.h"           //紋理輸出
#import "GPUImageFilterGroup.h"             //濾鏡組合
#import "GPUImageTextureInput.h"            //紋理輸入
#import "GPUImageUIElement.h"               //UI元素
#import "GPUImageBuffer.h"                  //緩存
#import "GPUImageFramebuffer.h"             //管理紋理緩存格式说庭、幀緩存的buffer
#import "GPUImageFramebufferCache.h"        //幀緩存池

// Filters
#import "GPUImageFilter.h"                  //GPUImage的濾鏡的基類
#import "GPUImageTwoInputFilter.h"          //對兩個輸入紋理進(jìn)行通用的處理.兩個輸入紋理默認(rèn)為inputImageTexture和inputImageTexture2。
#import "GPUImagePixellateFilter.h"         //像素化濾鏡
#import "GPUImagePixellatePositionFilter.h" //像素化位置濾鏡
#import "GPUImageSepiaFilter.h"             //褐色(懷舊)
#import "GPUImageColorInvertFilter.h"       //反色
#import "GPUImageSaturationFilter.h"        //飽和度
#import "GPUImageContrastFilter.h"          //對比度
#import "GPUImageExposureFilter.h"          //曝光
#import "GPUImageBrightnessFilter.h"        //亮度
#import "GPUImageLevelsFilter.h"            //色階
#import "GPUImageSharpenFilter.h"           //銳化
#import "GPUImageGammaFilter.h"             //伽馬線
#import "GPUImageSobelEdgeDetectionFilter.h"http://Sobel邊緣檢測算法(白邊郑趁,黑內(nèi)容刊驴,有點漫畫的反色效果)
#import "GPUImageSketchFilter.h"            //素描
#import "GPUImageToonFilter.h"              //卡通效果(黑色粗線描邊)
#import "GPUImageSmoothToonFilter.h"         //相比上面的效果更細(xì)膩,上面是粗曠的畫風(fēng)
#import "GPUImageMultiplyBlendFilter.h"     //通常用于創(chuàng)建陰影和深度效果
#import "GPUImageDissolveBlendFilter.h"     //溶解
#import "GPUImageKuwaharaFilter.h"          //桑原(Kuwahara)濾波,水粉畫的模糊效果;處理時間比較長捆憎,慎用
#import "GPUImageKuwaharaRadius3Filter.h"
#import "GPUImageVignetteFilter.h"             //暈影舅柜,形成黑色圓形邊緣,突出中間圖像的效果
#import "GPUImageGaussianBlurFilter.h"         //高斯模糊
#import "GPUImageGaussianBlurPositionFilter.h" //高斯模糊位置
#import "GPUImageGaussianSelectiveBlurFilter.h"http://高斯模糊躲惰,選擇部分清晰
#import "GPUImageOverlayBlendFilter.h"         //疊加,通常用于創(chuàng)建陰影效果
#import "GPUImageDarkenBlendFilter.h"          //加深混合,通常用于重疊類型
#import "GPUImageLightenBlendFilter.h"         //減淡混合,通常用于重疊類型
#import "GPUImageSwirlFilter.h"                //漩渦致份,中間形成卷曲的畫面
#import "GPUImageSourceOverBlendFilter.h"      //源混合
#import "GPUImageColorBurnBlendFilter.h"       //色彩加深混合
#import "GPUImageColorDodgeBlendFilter.h"      //色彩減淡混合
#import "GPUImageScreenBlendFilter.h"          //屏幕包裹,通常用于創(chuàng)建亮點和鏡頭眩光
#import "GPUImageExclusionBlendFilter.h"       //排除混合
#import "GPUImageDifferenceBlendFilter.h"       //差異混合,通常用于創(chuàng)建更多變動的顏色
#import "GPUImageSubtractBlendFilter.h"         //差值混合,通常用于創(chuàng)建兩個圖像之間的動畫變暗模糊效果
#import "GPUImageHardLightBlendFilter.h"        //強光混合,通常用于創(chuàng)建陰影效果
#import "GPUImageSoftLightBlendFilter.h"        //柔光混合
#import "GPUImageColorBlendFilter.h"            //顏色混合
#import "GPUImageHueBlendFilter.h"              //色彩混合
#import "GPUImageSaturationBlendFilter.h"       //飽和度混合
#import "GPUImageLuminosityBlendFilter.h"       //光度混合
#import "GPUImageCropFilter.h"                  //剪裁
#import "GPUImageGrayscaleFilter.h"             //灰度
#import "GPUImageTransformFilter.h"             //形狀變化
#import "GPUImageChromaKeyBlendFilter.h"        //色度鍵混合
#import "GPUImageHazeFilter.h"                  //朦朧加暗
#import "GPUImageLuminanceThresholdFilter.h"    //亮度閾
#import "GPUImagePosterizeFilter.h"             //色調(diào)分離,形成噪點效果
#import "GPUImageBoxBlurFilter.h"               //盒狀模糊
#import "GPUImageAdaptiveThresholdFilter.h"     //自適應(yīng)閾值
#import "GPUImageUnsharpMaskFilter.h"           //反遮罩銳化
#import "GPUImageBulgeDistortionFilter.h"       //凸起失真础拨,魚眼效果
#import "GPUImagePinchDistortionFilter.h"       //收縮失真氮块,凹面鏡
#import "GPUImageCrosshatchFilter.h"            //交叉線陰影,形成黑白網(wǎng)狀畫面
#import "GPUImageCGAColorspaceFilter.h"         //CGA色彩濾鏡诡宗,形成黑滔蝉、淺藍(lán)、紫色塊的畫面
#import "GPUImagePolarPixellateFilter.h"        //同心圓像素化
#import "GPUImageStretchDistortionFilter.h"     //伸展失真僚焦,哈哈鏡
#import "GPUImagePerlinNoiseFilter.h"           //柏林噪點锰提,花邊噪點
#import "GPUImageJFAVoronoiFilter.h"
#import "GPUImageVoronoiConsumerFilter.h"
#import "GPUImageMosaicFilter.h"                //黑白馬賽克
#import "GPUImageTiltShiftFilter.h"             //條紋模糊曙痘,中間清晰芳悲,上下兩端模糊
#import "GPUImage3x3ConvolutionFilter.h"        //3x3卷積,高亮大色塊變黑边坤,加亮邊緣名扛、線條等
#import "GPUImageEmbossFilter.h"                //浮雕效果,帶有點3d的感覺
#import "GPUImageCannyEdgeDetectionFilter.h"    //Canny邊緣檢測算法(比上更強烈的黑白對比度)
#import "GPUImageThresholdEdgeDetectionFilter.h"http://閾值邊緣檢測(效果與上差別不大)
#import "GPUImageMaskFilter.h"                  //遮罩混合
#import "GPUImageHistogramFilter.h"             //色彩直方圖茧痒,顯示在圖片上
#import "GPUImageHistogramGenerator.h"          //色彩直方圖
#import "GPUImageHistogramEqualizationFilter.h"
#import "GPUImagePrewittEdgeDetectionFilter.h"  //普瑞維特(Prewitt)邊緣檢測(效果與Sobel差不多肮韧,貌似更平滑
#import "GPUImageXYDerivativeFilter.h"          //XYDerivative邊緣檢測,畫面以藍(lán)色為主旺订,綠色為邊緣弄企,帶彩色
#import "GPUImageHarrisCornerDetectionFilter.h" //Harris角點檢測,會有綠色小十字顯示在圖片角點處
#import "GPUImageAlphaBlendFilter.h"            //透明混合,通常用于在背景上應(yīng)用前景的透明度
#import "GPUImageNormalBlendFilter.h"           //正常
#import "GPUImageNonMaximumSuppressionFilter.h" //非最大抑制区拳,只顯示亮度最高的像素拘领,其他為黑
#import "GPUImageRGBFilter.h"                   //RGB
#import "GPUImageMedianFilter.h"                //中間值,有種稍微模糊邊緣的效果
#import "GPUImageBilateralFilter.h"             //雙邊模糊
#import "GPUImageCrosshairGenerator.h"          //十字
#import "GPUImageToneCurveFilter.h"             //色調(diào)曲線
#import "GPUImageNobleCornerDetectionFilter.h" //Noble角點檢測樱调,檢測點更多
#import "GPUImageShiTomasiFeatureDetectionFilter.h"http://ShiTomasi角點檢測约素,與上差別不大
#import "GPUImageErosionFilter.h"               //侵蝕邊緣模糊,變黑白
#import "GPUImageRGBErosionFilter.h"            //RGB侵蝕邊緣模糊笆凌,有色彩
#import "GPUImageDilationFilter.h"              //擴展邊緣模糊圣猎,變黑白
#import "GPUImageRGBDilationFilter.h"           //RGB擴展邊緣模糊,有色彩
#import "GPUImageOpeningFilter.h"               //黑白色調(diào)模糊
#import "GPUImageRGBOpeningFilter.h"            //彩色模糊
#import "GPUImageClosingFilter.h"               //黑白色調(diào)模糊乞而,暗色會被提亮
#import "GPUImageRGBClosingFilter.h"            //彩色模糊送悔,暗色會被提亮
#import "GPUImageColorPackingFilter.h"          //色彩丟失,模糊(類似監(jiān)控攝像效果)
#import "GPUImageSphereRefractionFilter.h"      //球形折射,圖形倒立
#import "GPUImageMonochromeFilter.h"            //單色
#import "GPUImageOpacityFilter.h"               //不透明度
#import "GPUImageHighlightShadowFilter.h"       //提亮陰影
#import "GPUImageFalseColorFilter.h"            //色彩替換(替換亮部和暗部色彩)
#import "GPUImageHSBFilter.h"
#import "GPUImageHueFilter.h"                   //色度
#import "GPUImageGlassSphereFilter.h"           //水晶球效果
#import "GPUImageLookupFilter.h"                //lookup 色彩調(diào)整
#import "GPUImageAmatorkaFilter.h"              //Amatorka lookup
#import "GPUImageMissEtikateFilter.h"           //MissEtikate lookup
#import "GPUImageSoftEleganceFilter.h"          //SoftElegance lookup
#import "GPUImageAddBlendFilter.h"              //通常用于創(chuàng)建兩個圖像之間的動畫變亮模糊效果
#import "GPUImageDivideBlendFilter.h"           //通常用于創(chuàng)建兩個圖像之間的動畫變暗模糊效果
#import "GPUImagePolkaDotFilter.h"              //像素圓點花樣
#import "GPUImageLocalBinaryPatternFilter.h"    //圖像黑白化欠啤,并有大量噪點
#import "GPUImageLanczosResamplingFilter.h"     //Lanczos重取樣鳍怨,模糊效果
#import "GPUImageAverageColor.h"                //像素平均色值
#import "GPUImageSolidColorGenerator.h"         //純色
#import "GPUImageLuminosity.h"                  //亮度平均
#import "GPUImageAverageLuminanceThresholdFilter.h"http://像素色值亮度平均,圖像黑白(有類似漫畫效果)
#import "GPUImageWhiteBalanceFilter.h"          //白平橫
#import "GPUImageChromaKeyFilter.h"             //色度鍵
#import "GPUImageLowPassFilter.h"               //用于圖像加亮
#import "GPUImageHighPassFilter.h"              //圖像低于某值時顯示為黑
#import "GPUImageMotionDetector.h"              //動作檢測
#import "GPUImageHalftoneFilter.h"              //點染,圖像黑白化跪妥,由黑點構(gòu)成原圖的大致圖形
#import "GPUImageThresholdedNonMaximumSuppressionFilter.h"http://與上相比鞋喇,像素丟失更多
#import "GPUImageHoughTransformLineDetector.h"  //線條檢測
#import "GPUImageParallelCoordinateLineTransformFilter.h" //平行線檢測
#import "GPUImageThresholdSketchFilter.h"       //閥值素描,形成有噪點的素描
#import "GPUImageLineGenerator.h"               //線條
#import "GPUImageLinearBurnBlendFilter.h"       //線性加深混合
#import "GPUImageGaussianBlurPositionFilter.h"  //高斯模糊狀態(tài)
#import "GPUImagePixellatePositionFilter.h"     //像素化狀態(tài)
#import "GPUImageTwoInputCrossTextureSamplingFilter.h" //兩個輸入交叉紋理采樣
#import "GPUImagePoissonBlendFilter.h"          //泊松混合
#import "GPUImageMotionBlurFilter.h"            //運動模糊
#import "GPUImageZoomBlurFilter.h"              //放大模糊
#import "GPUImageLaplacianFilter.h"             //算子
#import "GPUImageiOSBlurFilter.h"               //iOS模糊
#import "GPUImageLuminanceRangeFilter.h"        //亮度范圍
#import "GPUImageDirectionalNonMaximumSuppressionFilter.h"  //定向非極大值抑制
#import "GPUImageDirectionalSobelEdgeDetectionFilter.h"     //定向邊界檢測
#import "GPUImageSingleComponentGaussianBlurFilter.h"       //單個組件高斯模糊
#import "GPUImageThreeInputFilter.h"                        //GPUImageThreeInputFilter的邏輯與GPUImageTwoInputFilter類似眉撵,增加了thirdInputFramebuffer作為第三個紋理inputImageTexture3的輸入
#import "GPUImageWeakPixelInclusionFilter.h"                //弱像素化

好了侦香,今天先學(xué)到這里。從一臉懵逼到初步了解纽疟。第一階段先把一些基礎(chǔ)的概念弄明白罐韩,后面再做原理分析和源碼分析

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市污朽,隨后出現(xiàn)的幾起案子散吵,更是在濱河造成了極大的恐慌,老刑警劉巖蟆肆,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件矾睦,死亡現(xiàn)場離奇詭異,居然都是意外死亡炎功,警方通過查閱死者的電腦和手機枚冗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蛇损,“玉大人赁温,你說我怎么就攤上這事∮倨耄” “怎么了股囊?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長更啄。 經(jīng)常有香客問我稚疹,道長,這世上最難降的妖魔是什么锈死? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任贫堰,我火速辦了婚禮,結(jié)果婚禮上待牵,老公的妹妹穿的比我還像新娘其屏。我一直安慰自己,他們只是感情好缨该,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布偎行。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蛤袒。 梳的紋絲不亂的頭發(fā)上熄云,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機與錄音妙真,去河邊找鬼缴允。 笑死,一個胖子當(dāng)著我的面吹牛珍德,可吹牛的內(nèi)容都是我干的练般。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼锈候,長吁一口氣:“原來是場噩夢啊……” “哼薄料!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起泵琳,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤摄职,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后获列,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谷市,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年蛛倦,在試婚紗的時候發(fā)現(xiàn)自己被綠了歌懒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡溯壶,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出甫男,到底是詐尸還是另有隱情且改,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布板驳,位于F島的核電站又跛,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏若治。R本人自食惡果不足惜慨蓝,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望端幼。 院中可真熱鬧礼烈,春花似錦、人聲如沸婆跑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至犀忱,卻和暖如春募谎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背阴汇。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工数冬, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人搀庶。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓吉执,卻偏偏與公主長得像,于是被迫代替她去往敵國和親地来。 傳聞我的和親對象是個殘疾皇子戳玫,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容