亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

GPUImage簡單濾鏡使用(一)

2019-11-14 17:52:53
字體:
來源:轉載
供稿:網友

  今天來學習一下一個簡單濾鏡使用的流程,通過調節亮度濾鏡來了解。先將GPUImage庫導入到項目中,引入頭文件"GPUImage.h"

     一、創建亮度濾鏡對象

      GPUImageBrightnessFilter *filter = [[GPUImageBrightnessFilter alloc] init],經過alloc init之后,程序為我們創建了頂點數組以及幀緩沖區,紋理,并綁定為當前使用的對象。

  1.為頂點著色添加屬性

   首先我們來看一該濾鏡的頂點著色器字符串

 

 attribute vec4 position; attribute vec4 inputTextureCoordinate;  varying vec2 textureCoordinate;  void main() {     gl_Position = position;     textureCoordinate = inputTextureCoordinate.xy; }

 

 

 我們了解到該頂點有2個需要添加的屬性position,inputTextureCoordinate.我們需要在程序中添加這2個屬性,通過下列方法來添加

 

- (void)initializeAttributes;{    [filterPRogram addAttribute:@"position"];    [filterProgram addAttribute:@"inputTextureCoordinate"];    // Override this, calling back to this super method, in order to add new attributes to your vertex shader}

 

  2.片段著色提供uniform
  
 varying highp vec2 textureCoordinate;  uniform sampler2D inputImageTexture; uniform lowp float brightness;  void main() {     lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);          gl_FragColor = vec4((textureColor.rgb + vec3(brightness)), textureColor.w); }  

 

  brightnessUniform = [filterProgram uniformIndex:@"brightness"]

  filterInputTextureUniform = [filterProgram uniformIndex:@"inputImageTexture"]

  3.啟用頂點數組

  glEnableVertexAttribArray(filterPositionAttribute);

      glEnableVertexAttribArray(filterTextureCoordinateAttribute)

 4.創建紋理
- (void)generateTexture;{    glActiveTexture(GL_TEXTURE1);    glGenTextures(1, &_texture);    glBindTexture(GL_TEXTURE_2D, _texture);    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, _textureOptions.minFilter);    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, _textureOptions.magFilter);    // This is necessary for non-power-of-two textures    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, _textureOptions.wrapS);    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, _textureOptions.wrapT);        // TODO: Handle mipmaps}
 
  5.創建幀緩沖區

      glGenFramebuffers(1, &framebuffer)

  6.幀緩沖綁定紋理

  glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, _texture, 0);

 

   二、設置亮度值

  filter.brightness = value

 

  三、設置紋理尺寸

    [filter forceProcessingAtSize:image.size]

 

  四、創建GPUImagePicture對象

     GPUImagePicture *pic = [[GPUImagePicture alloc] initWithImage:image]

 

  五、向創建好的GPUImagePicture對象添加target

 

  六,處理圖像

  [pic processImage]

 

進行圖像渲染并繪制

 

    glClearColor(backgroundColorRed, backgroundColorGreen, backgroundColorBlue, backgroundColorAlpha);    glClear(GL_COLOR_BUFFER_BIT);    glActiveTexture(GL_TEXTURE2);    glBindTexture(GL_TEXTURE_2D, [firstInputFramebuffer texture]);        glUniform1i(filterInputTextureUniform, 2);        glVertexAttribPointer(filterPositionAttribute, 2, GL_FLOAT, 0, 0, vertices);    glVertexAttribPointer(filterTextureCoordinateAttribute, 2, GL_FLOAT, 0, 0, textureCoordinates);        glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);

 

 

 

 

  七、[filter useNextFrameForImageCapture]

 

   八、獲取處理后的圖像

  image = [filter imageFromCurrentFramebuffer]

 

    GPUImageBrightnessFilter *filter = [[GPUImageBrightnessFilter alloc] init];    filter.brightness = value;    [filter forceProcessingAtSize:image.size];    GPUImagePicture *pic = [[GPUImagePicture alloc] initWithImage:image];    [pic addTarget:filter];        [pic processImage];    [filter useNextFrameForImageCapture];    image = [filter imageFromCurrentFramebuffer];

 

  


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲天堂男人的天堂| 欧美高清一级大片| 欧美日韩黄色大片| 日韩中文在线中文网三级| 久久久久久国产精品美女| 欧美小视频在线| 亚洲成人国产精品| 精品国产31久久久久久| 国产亚洲美女精品久久久| 日韩欧美在线看| 欧美高跟鞋交xxxxhd| 欧美国产日韩一区| 欧美一级黑人aaaaaaa做受| 综合欧美国产视频二区| 成人福利免费观看| 日韩有码在线视频| 亚洲男人天堂网站| 热久久美女精品天天吊色| 国产欧美va欧美va香蕉在| 欧美国产日韩免费| 欧美激情手机在线视频| 国产精品免费一区二区三区都可以| 亚洲第一精品久久忘忧草社区| 亚洲美女自拍视频| 日韩视频在线免费| 日本成人免费在线| 亚洲专区中文字幕| 久久久久久久一区二区三区| 九九综合九九综合| 欧美激情在线观看视频| 在线观看国产精品日韩av| 欧美在线激情视频| 国产91在线播放九色快色| 国产精品成人国产乱一区| 国产一区二区三区三区在线观看| 啊v视频在线一区二区三区| 亚洲无亚洲人成网站77777| 成人黄色网免费| 中文字幕在线视频日韩| 欧美成人一区在线| 九九九热精品免费视频观看网站| 91久久久久久久久| 国产精品久久久久久久久粉嫩av| 91精品国产自产在线| 日韩性生活视频| 日韩高清电影免费观看完整| 欧美激情精品久久久久久黑人| 91精品视频在线免费观看| 欧美亚洲另类激情另类| 国产+成+人+亚洲欧洲| 奇米影视亚洲狠狠色| 色综合久久悠悠| 青青草精品毛片| 国产精品成人一区二区三区吃奶| 亚洲精品国产美女| 91精品国产91久久久久久| 欧美在线免费视频| 国产精品电影网站| 亚洲精品美女在线观看| 日韩欧美精品中文字幕| 国产a∨精品一区二区三区不卡| 国产精品wwww| 激情久久av一区av二区av三区| 欧美午夜精品久久久久久浪潮| 久久亚洲精品一区| 亚洲色图国产精品| 亚洲性av网站| 亚洲第一网站男人都懂| 欧美性xxxx在线播放| 久久精品视频中文字幕| 亚洲精品99久久久久中文字幕| 国产成人精品免高潮费视频| 亚洲精品日韩久久久| 亚洲自拍偷拍网址| 欧美国产一区二区三区| 国产精品扒开腿做爽爽爽的视频| 富二代精品短视频| 激情亚洲一区二区三区四区| 69精品小视频| 少妇高潮久久久久久潘金莲| 91精品国产色综合久久不卡98口| 国产精品视频yy9099| 国产精品久久久91| 国产精品久久久久久一区二区| 精品日韩美女的视频高清| 搡老女人一区二区三区视频tv| 国产欧美日韩高清| 欧美不卡视频一区发布| 欧洲午夜精品久久久| 午夜精品蜜臀一区二区三区免费| 欧美中文在线字幕| 中文字幕欧美精品日韩中文字幕| www.国产一区| 久久精品国产久精国产一老狼| 成人黄色免费看| 国产精品扒开腿做爽爽爽男男| 国产精品久久久av| 国产成人高清激情视频在线观看| 国内精品久久久久影院 日本资源| 欧美日韩裸体免费视频| 国产在线拍偷自揄拍精品| 久久电影一区二区| 中文字幕精品一区二区精品| 欧美日韩第一视频| 亚洲一区二区三区毛片| 欧美一级大胆视频| 北条麻妃99精品青青久久| 社区色欧美激情 | 亚洲天堂第一页| 粉嫩老牛aⅴ一区二区三区| 国产第一区电影| 久久久欧美一区二区| 91国产中文字幕| 91在线观看欧美日韩| 欧美日韩裸体免费视频| 91成人福利在线| 国产精品亚洲美女av网站| 日韩在线免费视频| 欧美国产视频日韩| 欧美成人精品一区二区| 精品亚洲一区二区三区在线播放| 91精品啪在线观看麻豆免费| 欧美在线视频一区二区| 在线午夜精品自拍| 国产午夜精品麻豆| 日韩视频在线免费观看| 午夜美女久久久久爽久久| 91精品国产91久久久久久不卡| 日韩av手机在线观看| 久久香蕉国产线看观看网| 国内精品小视频| 亚洲国产精品成人一区二区| 欧美日韩国产黄| 中文综合在线观看| 中文字幕一区二区三区电影| 亚洲精品国产精品国自产在线| 欧美极品少妇xxxxⅹ裸体艺术| 久99九色视频在线观看| 久久久久久久国产| 国产91精品黑色丝袜高跟鞋| 国产精品入口免费视| 日韩国产一区三区| 精品久久久久久国产91| 一区二区在线视频| 永久555www成人免费| 久久久久久91香蕉国产| 国产精品久久久久久久av大片| 亚洲无av在线中文字幕| 亚洲欧美精品伊人久久| 久久久久久亚洲精品不卡| 在线成人一区二区| 亚洲精品美女免费| 91久久精品国产91久久| 91久久国产精品91久久性色| 亚洲欧美在线磁力| 91精品综合久久久久久五月天| 欧美激情videos| 亚洲一区二区少妇| 热re99久久精品国产66热| 国产精品网红福利| 日韩在线观看免费网站| 日韩av在线免费观看| 最近2019中文字幕mv免费看| 久久深夜福利免费观看|