区块链技术博客
www.b2bchain.cn

基础部分(五)–用Metal实现一个UIImageView求职学习资料

本文介绍了基础部分(五)–用Metal实现一个UIImageView求职学习资料,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

上文,我们使用Metal成功渲染出一张图,这次封装一个简易的UIImageView — CBIImageView;

Demo地址:https://github.com/DCBApp/CBIKit

使用如下:

  • 初始化:
let imageView = CBIImageView(frame: view.bounds, image: UIImage(named: "girls")) addSubView(imageView)
  • 更新图片:
imageView?.image = UIImage(named: "mygirls.jpg")
  • 效果:
    基础部分(五)--用Metal实现一个UIImageView

回忆一下渲染流程:

  • 准备工作 MTLDevice MTKView
  • 准备着色器:顶点着色器与片元着色
  • 配置渲染管线:绑定着色器
  • 配置坐标数据:顶点坐标、纹理坐标
  • 纹理数据MTLTexture
  • 配置纹理
  • 提交渲染指令

包装一个CBIImage

“`

public class CBIImage:CBIRender{

init(mtkView:MTKView,image:UIImage) {     super.init(mtkView: mtkView)     configureShader(vertexShader: "imageVertexShader", fragmentShader: "imageFragmentShader")     configurePipelineState(mtkView: mtkView)     updateImage(img: image)     let viewportSizeWidth = Float(_viewportSize.x)/2     let textureVertices : [CBIImageVertex] = [         CBIImageVertex(position: vector_float2(-viewportSizeWidth, -viewportSizeWidth),                        textureCoordinate:vector_float2(1,1)),         CBIImageVertex(position: vector_float2(-viewportSizeWidth, viewportSizeWidth),                        textureCoordinate:vector_float2(1,0)),         CBIImageVertex(position: vector_float2( viewportSizeWidth, -viewportSizeWidth),                        textureCoordinate:vector_float2(0,1)),         CBIImageVertex(position: vector_float2( viewportSizeWidth, viewportSizeWidth),                        textureCoordinate:vector_float2(0,0))     ]     _vertexBuffer = sharedContext.device.makeBuffer(bytes: textureVertices,                                                     length: textureVertices.count * MemoryLayout<CBIVertex>.size,

上文,我们使用Metal成功渲染出一张图,这次封装一个简易的UIImageView — CBIImageView;

Demo地址:https://github.com/DCBApp/CBIKit

使用如下:

  • 初始化:
let imageView = CBIImageView(frame: view.bounds, image: UIImage(named: "girls")) addSubView(imageView)
  • 更新图片:
imageView?.image = UIImage(named: "mygirls.jpg")
  • 效果:
    基础部分(五)--用Metal实现一个UIImageView

回忆一下渲染流程:

  • 准备工作 MTLDevice MTKView
  • 准备着色器:顶点着色器与片元着色
  • 配置渲染管线:绑定着色器
  • 配置坐标数据:顶点坐标、纹理坐标
  • 纹理数据MTLTexture
  • 配置纹理
  • 提交渲染指令

包装一个CBIImage

“`

public class CBIImage:CBIRender{

init(mtkView:MTKView,image:UIImage) {     super.init(mtkView: mtkView)     configureShader(vertexShader: "imageVertexShader", fragmentShader: "imageFragmentShader")     configurePipelineState(mtkView: mtkView)     updateImage(img: image)     let viewportSizeWidth = Float(_viewportSize.x)/2     let textureVertices : [CBIImageVertex] = [         CBIImageVertex(position: vector_float2(-viewportSizeWidth, -viewportSizeWidth),                        textureCoordinate:vector_float2(1,1)),         CBIImageVertex(position: vector_float2(-viewportSizeWidth, viewportSizeWidth),                        textureCoordinate:vector_float2(1,0)),         CBIImageVertex(position: vector_float2( viewportSizeWidth, -viewportSizeWidth),                        textureCoordinate:vector_float2(0,1)),         CBIImageVertex(position: vector_float2( viewportSizeWidth, viewportSizeWidth),                        textureCoordinate:vector_float2(0,0))     ]     _vertexBuffer = sharedContext.device.makeBuffer(bytes: textureVertices,                                                     length: textureVertices.count * MemoryLayout<CBIVertex>.size,

上文,我们使用Metal成功渲染出一张图,这次封装一个简易的UIImageView — CBIImageView;

Demo地址:https://github.com/DCBApp/CBIKit

使用如下:

  • 初始化:
let imageView = CBIImageView(frame: view.bounds, image: UIImage(named: "girls")) addSubView(imageView)
  • 更新图片:
imageView?.image = UIImage(named: "mygirls.jpg")
  • 效果:
    基础部分(五)--用Metal实现一个UIImageView

回忆一下渲染流程:

  • 准备工作 MTLDevice MTKView
  • 准备着色器:顶点着色器与片元着色
  • 配置渲染管线:绑定着色器
  • 配置坐标数据:顶点坐标、纹理坐标
  • 纹理数据MTLTexture
  • 配置纹理
  • 提交渲染指令

包装一个CBIImage

“`

public class CBIImage:CBIRender{

init(mtkView:MTKView,image:UIImage) {     super.init(mtkView: mtkView)     configureShader(vertexShader: "imageVertexShader", fragmentShader: "imageFragmentShader")     configurePipelineState(mtkView: mtkView)     updateImage(img: image)     let viewportSizeWidth = Float(_viewportSize.x)/2     let textureVertices : [CBIImageVertex] = [         CBIImageVertex(position: vector_float2(-viewportSizeWidth, -viewportSizeWidth),                        textureCoordinate:vector_float2(1,1)),         CBIImageVertex(position: vector_float2(-viewportSizeWidth, viewportSizeWidth),                        textureCoordinate:vector_float2(1,0)),         CBIImageVertex(position: vector_float2( viewportSizeWidth, -viewportSizeWidth),                        textureCoordinate:vector_float2(0,1)),         CBIImageVertex(position: vector_float2( viewportSizeWidth, viewportSizeWidth),                        textureCoordinate:vector_float2(0,0))     ]     _vertexBuffer = sharedContext.device.makeBuffer(bytes: textureVertices,                                                     length: textureVertices.count * MemoryLayout<CBIVertex>.size,

部分转自互联网,侵权删除联系

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 基础部分(五)–用Metal实现一个UIImageView求职学习资料
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们