initial commit
This commit is contained in:
parent
04968efaed
commit
959623e0e3
|
|
@ -35,6 +35,16 @@
|
||||||
/* End PBXFrameworksBuildPhase section */
|
/* End PBXFrameworksBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXGroup section */
|
/* Begin PBXGroup section */
|
||||||
|
297F43081DEA2E3400638FC8 /* Supporting files */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
29D8782F1C84D2B0007B5F17 /* Main.storyboard */,
|
||||||
|
29D878321C84D2B0007B5F17 /* Info.plist */,
|
||||||
|
29D878291C84D2B0007B5F17 /* AppDelegate.swift */,
|
||||||
|
);
|
||||||
|
name = "Supporting files";
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
29D8781D1C84D2B0007B5F17 = {
|
29D8781D1C84D2B0007B5F17 = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
|
@ -57,9 +67,7 @@
|
||||||
29D878381C84D309007B5F17 /* MetalView.swift */,
|
29D878381C84D309007B5F17 /* MetalView.swift */,
|
||||||
29B186251C84FF5800E9C0AA /* MathUtils.swift */,
|
29B186251C84FF5800E9C0AA /* MathUtils.swift */,
|
||||||
29D8783A1C84D335007B5F17 /* Shaders.metal */,
|
29D8783A1C84D335007B5F17 /* Shaders.metal */,
|
||||||
29D8782F1C84D2B0007B5F17 /* Main.storyboard */,
|
297F43081DEA2E3400638FC8 /* Supporting files */,
|
||||||
29D878321C84D2B0007B5F17 /* Info.plist */,
|
|
||||||
29D878291C84D2B0007B5F17 /* AppDelegate.swift */,
|
|
||||||
);
|
);
|
||||||
path = chapter07;
|
path = chapter07;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
|
|
@ -91,7 +99,7 @@
|
||||||
isa = PBXProject;
|
isa = PBXProject;
|
||||||
attributes = {
|
attributes = {
|
||||||
LastSwiftUpdateCheck = 0720;
|
LastSwiftUpdateCheck = 0720;
|
||||||
LastUpgradeCheck = 0800;
|
LastUpgradeCheck = 0810;
|
||||||
ORGANIZATIONNAME = "Marius Horga";
|
ORGANIZATIONNAME = "Marius Horga";
|
||||||
TargetAttributes = {
|
TargetAttributes = {
|
||||||
29D878251C84D2B0007B5F17 = {
|
29D878251C84D2B0007B5F17 = {
|
||||||
|
|
@ -168,8 +176,10 @@
|
||||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||||
CLANG_WARN_EMPTY_BODY = YES;
|
CLANG_WARN_EMPTY_BODY = YES;
|
||||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||||
|
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||||
CLANG_WARN_INT_CONVERSION = YES;
|
CLANG_WARN_INT_CONVERSION = YES;
|
||||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||||
|
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
CODE_SIGN_IDENTITY = "-";
|
CODE_SIGN_IDENTITY = "-";
|
||||||
|
|
@ -212,8 +222,10 @@
|
||||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||||
CLANG_WARN_EMPTY_BODY = YES;
|
CLANG_WARN_EMPTY_BODY = YES;
|
||||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||||
|
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||||
CLANG_WARN_INT_CONVERSION = YES;
|
CLANG_WARN_INT_CONVERSION = YES;
|
||||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||||
|
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
CODE_SIGN_IDENTITY = "-";
|
CODE_SIGN_IDENTITY = "-";
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<Scheme
|
<Scheme
|
||||||
LastUpgradeVersion = "0800"
|
LastUpgradeVersion = "0810"
|
||||||
version = "1.3">
|
version = "1.3">
|
||||||
<BuildAction
|
<BuildAction
|
||||||
parallelizeBuildables = "YES"
|
parallelizeBuildables = "YES"
|
||||||
|
|
|
||||||
|
|
@ -23,27 +23,27 @@ class MetalView: MTKView {
|
||||||
|
|
||||||
func createBuffers() {
|
func createBuffers() {
|
||||||
device = MTLCreateSystemDefaultDevice()!
|
device = MTLCreateSystemDefaultDevice()!
|
||||||
commandQueue = device!.newCommandQueue()
|
commandQueue = device!.makeCommandQueue()
|
||||||
let vertex_data = [Vertex(position: [-1.0, -1.0, 0.0, 1.0], color: [1, 0, 0, 1]),
|
let vertex_data = [Vertex(position: [-1.0, -1.0, 0.0, 1.0], color: [1, 0, 0, 1]),
|
||||||
Vertex(position: [ 1.0, -1.0, 0.0, 1.0], color: [0, 1, 0, 1]),
|
Vertex(position: [ 1.0, -1.0, 0.0, 1.0], color: [0, 1, 0, 1]),
|
||||||
Vertex(position: [ 0.0, 1.0, 0.0, 1.0], color: [0, 0, 1, 1])
|
Vertex(position: [ 0.0, 1.0, 0.0, 1.0], color: [0, 0, 1, 1])
|
||||||
]
|
]
|
||||||
vertexBuffer = device!.newBuffer(withBytes: vertex_data, length: sizeof(Vertex.self) * 3, options:[])
|
vertexBuffer = device!.makeBuffer(bytes: vertex_data, length: MemoryLayout<Vertex>.size * 3, options:[])
|
||||||
uniformBuffer = device!.newBuffer(withLength: sizeof(Float.self) * 16, options: [])
|
uniformBuffer = device!.makeBuffer(length: MemoryLayout<Float>.size * 16, options: [])
|
||||||
let bufferPointer = uniformBuffer.contents()
|
let bufferPointer = uniformBuffer.contents()
|
||||||
memcpy(bufferPointer, Matrix().modelMatrix(Matrix()).m, sizeof(Float.self) * 16)
|
memcpy(bufferPointer, Matrix().modelMatrix(Matrix()).m, MemoryLayout<Float>.size * 16)
|
||||||
}
|
}
|
||||||
|
|
||||||
func registerShaders() {
|
func registerShaders() {
|
||||||
let library = device!.newDefaultLibrary()!
|
let library = device!.newDefaultLibrary()!
|
||||||
let vertex_func = library.newFunction(withName: "vertex_func")
|
let vertex_func = library.makeFunction(name: "vertex_func")
|
||||||
let frag_func = library.newFunction(withName: "fragment_func")
|
let frag_func = library.makeFunction(name: "fragment_func")
|
||||||
let rpld = MTLRenderPipelineDescriptor()
|
let rpld = MTLRenderPipelineDescriptor()
|
||||||
rpld.vertexFunction = vertex_func
|
rpld.vertexFunction = vertex_func
|
||||||
rpld.fragmentFunction = frag_func
|
rpld.fragmentFunction = frag_func
|
||||||
rpld.colorAttachments[0].pixelFormat = .bgra8Unorm
|
rpld.colorAttachments[0].pixelFormat = .bgra8Unorm
|
||||||
do {
|
do {
|
||||||
try rps = device!.newRenderPipelineState(with: rpld)
|
try rps = device!.makeRenderPipelineState(descriptor: rpld)
|
||||||
} catch let error {
|
} catch let error {
|
||||||
self.print("\(error)")
|
self.print("\(error)")
|
||||||
}
|
}
|
||||||
|
|
@ -51,14 +51,14 @@ class MetalView: MTKView {
|
||||||
|
|
||||||
override func draw(_ dirtyRect: NSRect) {
|
override func draw(_ dirtyRect: NSRect) {
|
||||||
super.draw(dirtyRect)
|
super.draw(dirtyRect)
|
||||||
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)
|
rpd.colorAttachments[0].clearColor = MTLClearColorMake(0.5, 0.5, 0.5, 1.0)
|
||||||
let commandBuffer = device!.newCommandQueue().commandBuffer()
|
let commandBuffer = device!.makeCommandQueue().makeCommandBuffer()
|
||||||
let commandEncoder = commandBuffer.renderCommandEncoder(with: rpd)
|
let commandEncoder = commandBuffer.makeRenderCommandEncoder(descriptor: rpd)
|
||||||
commandEncoder.setRenderPipelineState(rps!)
|
commandEncoder.setRenderPipelineState(rps!)
|
||||||
commandEncoder.setVertexBuffer(vertexBuffer, offset: 0, at: 0)
|
commandEncoder.setVertexBuffer(vertexBuffer, offset: 0, at: 0)
|
||||||
commandEncoder.setVertexBuffer(uniformBuffer, offset: 0, at: 1)
|
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()
|
commandEncoder.endEncoding()
|
||||||
commandBuffer.present(drawable)
|
commandBuffer.present(drawable)
|
||||||
commandBuffer.commit()
|
commandBuffer.commit()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue