From 8a4ab80d43f92e740e2ab50abcc07b069d8c88e0 Mon Sep 17 00:00:00 2001 From: Marius Horga Date: Sat, 26 Nov 2016 12:09:04 +0200 Subject: [PATCH] updated to Swift 3 --- .../UserInterfaceState.xcuserstate | Bin 19862 -> 20173 bytes ch05/chapter05.xcodeproj/project.pbxproj | 20 ++++++++++++---- .../UserInterfaceState.xcuserstate | Bin 26227 -> 26187 bytes .../xcschemes/chapter05.xcscheme | 2 +- ch05/chapter05/MetalView.swift | 22 +++++++++--------- 5 files changed, 28 insertions(+), 16 deletions(-) diff --git a/ch04/chapter04.xcodeproj/project.xcworkspace/xcuserdata/marius.xcuserdatad/UserInterfaceState.xcuserstate b/ch04/chapter04.xcodeproj/project.xcworkspace/xcuserdata/marius.xcuserdatad/UserInterfaceState.xcuserstate index 591b49723d066956d2534cdf7403cee7276494b1..004c588f758cd7518904452d6b914d07dfe3fb47 100644 GIT binary patch delta 10131 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 Gi~bMscjy`b delta 10034 zcmbVxcU+U#7x#150|WvIBO!wjqCi4OSP29|2&h>1!o5*ZaaVDV+^g1I*Q0gRS{d$L zXWiRc+q!D2t<~CEYptzy)oRtgH=wnC-rpbZ=j8**^W1yxz2~0u{ho8~CddLVkPQkz9Z(m% z1)6}Spc!Zj+JR1BAb1-L1tY*nFcyph6fp1(m;z>inP3i>3zmToz;f^*SOLmG1*im7 zU<=p^J_6gocCZ8N1iO6TC^!a=gA?E+_yn8+pMtNz*WePk488&1f-B$__yybszk#b`mcc1-Dx3zV!x?ZUoCV*7bKwHG5WWYO!4KeaSOwR> zweVxO2kwRY;C^@j9)ySBQFs!54!?ls;05><{03fyH{eh3CVUG2maI_YlOrVxM_Qyq zdK7~U$c!u~30YAF@}NBAMfs=z)j@SpQ`8JKM=elC)CqM)T~Hs?7Y#r|5Je14M3c~D z^bVSiW}$b{Y&0J&Ma$8Ls1jA7HE1o`i}s=Y=m0v14xz*72s(;RqU-1f^dq|ALqDOL z=x1~b{eo_zU(p@(8~PnRL{Bil5X*2dR^w=_!CI`tR-BA&*p5?hDo(>$*oE`37r%uY z;D)$4F2b#GN8BCv#sly`JRVQLK1?yg6Y(TG56{OEUVsq!%e6{mB3_lnf)| z$pqr_5lSYL_sAl$m@FYn$@^p(`G71Z>&SYtfovq($ab=a93V%?338I0CTGZ5a*kXi zUy&ckkK_jViQFXj$pi9`JR*ORXXH6~A!0E|REptZgs2nsVvHCkCW^_TLv)InVxH&~ z^Th^YE3v)URqP?kdyDAZc4FA%OI! ztLQgUj`#;?v&|YH64Zn?-R1~c2AVz)9@0j%F*UcSl|Sc@;QzTG1PL-BSa>2l70fGE zP}}+H*XKfIx$uHEquE~yD}`0UY9SZ^0EN!NdfI|Er_t0UbqduafgswFwyFTZAcPjt z*3{On#n8e1N_v*HE$mfVHh5@k0v zJ5&J;&;lLM(~h(!?M3@ZUxn@qs|Df(b2+F@JC%b3+F2?O(_52-2^GK!l4%!OOp{+K z4^lw75MBXNK^pB!yH$V;;TG*K-3n`|&H2g{@Z5M>5+$YV1=0XcFgbGwe2TEb)mcd|n^~>OH3NP0yUD8Ep0>)G~y)C7Mw+Zl7 zKM&)wMrlrTl(btJBb!{^HoRs?Om#CK2Bu51A`+w&bCfhBLKiT*T4=O1D5hrMkO-x8 z$V$v$9(d31u=zj&3&27;mX4$2>4Yk<2rLFmz*6d?lrlO|YM~k@u}D+mO0do^zY44d zYrtAMnZ84((5Y2mJ=nnIH_>TyI+veOEnhz>E^#;5@0b4=>;ZehK01rOOJ~zLRp0

Y=%Olc4xF!+Urd+0lwXke9r)pY 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 diff --git a/ch05/chapter05.xcodeproj/project.pbxproj b/ch05/chapter05.xcodeproj/project.pbxproj index c2db75a..f1362b3 100644 --- a/ch05/chapter05.xcodeproj/project.pbxproj +++ b/ch05/chapter05.xcodeproj/project.pbxproj @@ -33,6 +33,16 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 297F43061DE9960800638FC8 /* Supporting files */ = { + isa = PBXGroup; + children = ( + 298037281C62437900FBBC6A /* Main.storyboard */, + 2980372B1C62437900FBBC6A /* Info.plist */, + 298037221C62437900FBBC6A /* AppDelegate.swift */, + ); + name = "Supporting files"; + sourceTree = ""; + }; 298037161C62437900FBBC6A = { isa = PBXGroup; children = ( @@ -54,9 +64,7 @@ children = ( 298037311C6243CB00FBBC6A /* MetalView.swift */, 298037331C62440400FBBC6A /* Shaders.metal */, - 298037281C62437900FBBC6A /* Main.storyboard */, - 2980372B1C62437900FBBC6A /* Info.plist */, - 298037221C62437900FBBC6A /* AppDelegate.swift */, + 297F43061DE9960800638FC8 /* Supporting files */, ); path = chapter05; sourceTree = ""; @@ -88,7 +96,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0720; - LastUpgradeCheck = 0800; + LastUpgradeCheck = 0810; ORGANIZATIONNAME = "Marius Horga"; TargetAttributes = { 2980371E1C62437900FBBC6A = { @@ -164,8 +172,10 @@ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "-"; @@ -208,8 +218,10 @@ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "-"; diff --git a/ch05/chapter05.xcodeproj/project.xcworkspace/xcuserdata/marius.xcuserdatad/UserInterfaceState.xcuserstate b/ch05/chapter05.xcodeproj/project.xcworkspace/xcuserdata/marius.xcuserdatad/UserInterfaceState.xcuserstate index 963e81b21c9ef556f23b3d27f76a0dee92f3553d..e04aa460b22814a4fdafa3b22f3730d19665f5ae 100644 GIT binary patch delta 12975 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 V*4Eu7Ls<9UDY@?d$G>Ik{vVSEE&u=k delta 13060 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 diff --git a/ch05/chapter05.xcodeproj/xcuserdata/marius.xcuserdatad/xcschemes/chapter05.xcscheme b/ch05/chapter05.xcodeproj/xcuserdata/marius.xcuserdatad/xcschemes/chapter05.xcscheme index 2f4f9c3..45e4f67 100644 --- a/ch05/chapter05.xcodeproj/xcuserdata/marius.xcuserdatad/xcschemes/chapter05.xcscheme +++ b/ch05/chapter05.xcodeproj/xcuserdata/marius.xcuserdatad/xcschemes/chapter05.xcscheme @@ -1,6 +1,6 @@ .size * 3, options:[]) + uniformBuffer = device!.makeBuffer(length: MemoryLayout.size * 16, options: []) let bufferPointer = uniformBuffer.contents() - memcpy(bufferPointer, Matrix().modelMatrix(Matrix()).m, sizeof(Float.self) * 16) + memcpy(bufferPointer, Matrix().modelMatrix(Matrix()).m, MemoryLayout.size * 16) } func registerShaders() { let library = device!.newDefaultLibrary()! - let vertex_func = library.newFunction(withName: "vertex_func") - let frag_func = library.newFunction(withName: "fragment_func") + let vertex_func = library.makeFunction(name: "vertex_func") + let frag_func = library.makeFunction(name: "fragment_func") let rpld = MTLRenderPipelineDescriptor() rpld.vertexFunction = vertex_func rpld.fragmentFunction = frag_func rpld.colorAttachments[0].pixelFormat = .bgra8Unorm do { - try rps = device!.newRenderPipelineState(with: rpld) + try rps = device!.makeRenderPipelineState(descriptor: rpld) } catch let error { self.print("\(error)") } } override func draw(_ dirtyRect: NSRect) { - if let rpd = currentRenderPassDescriptor, drawable = currentDrawable { + if let rpd = currentRenderPassDescriptor, let drawable = currentDrawable { rpd.colorAttachments[0].clearColor = MTLClearColorMake(0.5, 0.5, 0.5, 1.0) - let commandBuffer = device!.newCommandQueue().commandBuffer() - let commandEncoder = commandBuffer.renderCommandEncoder(with: rpd) + let commandBuffer = device!.makeCommandQueue().makeCommandBuffer() + let commandEncoder = commandBuffer.makeRenderCommandEncoder(descriptor: rpd) commandEncoder.setRenderPipelineState(rps!) commandEncoder.setVertexBuffer(vertexBuffer, offset: 0, at: 0) commandEncoder.setVertexBuffer(uniformBuffer, offset: 0, at: 1) - commandEncoder.drawPrimitives(.triangle, vertexStart: 0, vertexCount: 3, instanceCount: 1) + commandEncoder.drawPrimitives(type: .triangle, vertexStart: 0, vertexCount: 3, instanceCount: 1) commandEncoder.endEncoding() commandBuffer.present(drawable) commandBuffer.commit()