Skip to content

Commit 27d197c

Browse files
committed
Add macOS target to Chapter 7 Mipmapping.
1 parent 31aa246 commit 27d197c

File tree

16 files changed

+271
-71
lines changed

16 files changed

+271
-71
lines changed

objc/07-Mipmapping/Mipmapping-Mac/Base.lproj/Main.storyboard

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2-
<document type="com.apple.InterfaceBuilder3.Cocoa.Storyboard.XIB" version="3.0" toolsVersion="11134" systemVersion="15F34" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" initialViewController="B8D-0N-5wS">
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<document type="com.apple.InterfaceBuilder3.Cocoa.Storyboard.XIB" version="3.0" toolsVersion="14113" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" initialViewController="B8D-0N-5wS">
33
<dependencies>
4-
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11134"/>
4+
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14113"/>
5+
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
56
</dependencies>
67
<scenes>
78
<!--Application-->
@@ -673,7 +674,7 @@
673674
<outlet property="delegate" destination="Voe-Tx-rLC" id="PrD-fu-P6m"/>
674675
</connections>
675676
</application>
676-
<customObject id="Voe-Tx-rLC" customClass="AppDelegate" customModuleProvider=""/>
677+
<customObject id="Voe-Tx-rLC" customClass="AppDelegate"/>
677678
<customObject id="YLy-65-1bz" customClass="NSFontManager"/>
678679
<customObject id="Ady-hI-5gd" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
679680
</objects>
@@ -688,7 +689,7 @@
688689
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
689690
<rect key="contentRect" x="196" y="240" width="480" height="270"/>
690691
<rect key="screenRect" x="0.0" y="0.0" width="1680" height="1027"/>
691-
<connections>
692+
<connections>
692693
<outlet property="delegate" destination="B8D-0N-5wS" id="98r-iN-zZc"/>
693694
</connections>
694695
</window>
@@ -703,8 +704,8 @@
703704
<!--View Controller-->
704705
<scene sceneID="hIz-AP-VOD">
705706
<objects>
706-
<viewController id="XfG-lQ-9wD" customClass="ViewController" customModuleProvider="" sceneMemberID="viewController">
707-
<view key="view" wantsLayer="YES" id="m2S-Jp-Qdl">
707+
<viewController id="XfG-lQ-9wD" customClass="ViewController" sceneMemberID="viewController">
708+
<view key="view" wantsLayer="YES" id="m2S-Jp-Qdl" customClass="MBEMetalViewMac">
708709
<rect key="frame" x="0.0" y="0.0" width="480" height="270"/>
709710
<autoresizingMask key="autoresizingMask"/>
710711
</view>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
//
2+
// MBEMetalViewMac.h
3+
// DrawingIn3D-Mac
4+
//
5+
// Created by Brent Gulanowski on 2018-06-18.
6+
// Copyright © 2018 Metal by Example. All rights reserved.
7+
//
8+
9+
#import "MBEMetalView.h"
10+
11+
@interface MBEMetalViewMac : MBEMetalView
12+
13+
@end
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
//
2+
// MBEMetalViewMac.m
3+
// DrawingIn3D-Mac
4+
//
5+
// Created by Brent Gulanowski on 2018-06-18.
6+
// Copyright © 2018 Metal by Example. All rights reserved.
7+
//
8+
9+
#import "MBEMetalViewMac.h"
10+
11+
@import Metal;
12+
@import QuartzCore;
13+
14+
@interface MBEMetalViewMac()
15+
@property (nonatomic, strong) CAMetalLayer *metalLayer;
16+
@end
17+
18+
19+
@implementation MBEMetalViewMac
20+
21+
@synthesize metalLayer=_metalLayer;
22+
23+
- (CALayer *)makeBackingLayer
24+
{
25+
CAMetalLayer *layer = [[CAMetalLayer alloc] init];
26+
_metalLayer.pixelFormat = MTLPixelFormatBGRA8Unorm;
27+
_metalLayer = layer;
28+
return layer;
29+
}
30+
31+
- (CGSize)drawableSize {
32+
return self.bounds.size;
33+
}
34+
35+
@end

objc/07-Mipmapping/Mipmapping-Mac/ViewController.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,13 @@
66
// Copyright © 2018 Metal By Example. All rights reserved.
77
//
88

9-
#import <Cocoa/Cocoa.h>
9+
@import Cocoa;
10+
11+
#import "MBEMetalView.h"
1012

1113
@interface ViewController : NSViewController
1214

15+
@property (nonatomic, readonly) MBEMetalView *metalView;
1316

1417
@end
1518

objc/07-Mipmapping/Mipmapping-Mac/ViewController.m

Lines changed: 54 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,69 @@
77
//
88

99
#import "ViewController.h"
10+
#import "MBERenderer.h"
11+
12+
@interface ViewController ()
13+
14+
@property (nonatomic) CVDisplayLinkRef displayLink;
15+
@property (nonatomic, strong) MBERenderer *renderer;
16+
17+
- (void)draw;
18+
19+
@end
20+
21+
static CVReturn C3DViewDisplayLink(CVDisplayLinkRef displayLink,
22+
const CVTimeStamp *inNow,
23+
const CVTimeStamp *inOutputTime,
24+
CVOptionFlags flagsIn,
25+
CVOptionFlags *flagsOut,
26+
void *viewController)
27+
{
28+
@autoreleasepool {
29+
[(__bridge ViewController *)viewController draw];
30+
}
31+
32+
return kCVReturnSuccess;
33+
}
1034

1135
@implementation ViewController
1236

13-
- (void)viewDidLoad {
14-
[super viewDidLoad];
37+
- (void)dealloc
38+
{
39+
CVDisplayLinkRelease(_displayLink);
40+
_displayLink = NULL;
41+
}
1542

16-
// Do any additional setup after loading the view.
43+
- (MBEMetalView *)metalView
44+
{
45+
return (MBEMetalView *)self.view;
1746
}
1847

48+
- (void)viewDidLoad
49+
{
50+
[super viewDidLoad];
51+
52+
self.renderer = [[MBERenderer alloc] initWithLayer:self.metalView.metalLayer];
53+
self.renderer.cameraDistance = 2.0f;
1954

20-
- (void)setRepresentedObject:(id)representedObject {
21-
[super setRepresentedObject:representedObject];
55+
CVDisplayLinkCreateWithActiveCGDisplays(&_displayLink);
56+
CVDisplayLinkSetOutputCallback(_displayLink, C3DViewDisplayLink, (__bridge void *)(self));
57+
}
2258

23-
// Update the view, if already loaded.
59+
- (void)viewWillAppear
60+
{
61+
CVDisplayLinkStart(_displayLink);
2462
}
2563

64+
- (void)viewWillDisappear
65+
{
66+
CVDisplayLinkStop(_displayLink);
67+
}
68+
69+
- (void)draw
70+
{
71+
// TODO: implement UI controls
72+
[self.renderer draw];
73+
}
2674

2775
@end

objc/07-Mipmapping/Mipmapping.xcodeproj/project.pbxproj

Lines changed: 40 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
83A1BDEA1A365434005638E2 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 83A1BDE81A365434005638E2 /* LaunchScreen.xib */; };
1616
83A1BE081A36759E005638E2 /* MBEMatrixUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 83A1BE001A36759E005638E2 /* MBEMatrixUtilities.m */; };
1717
83A1BE091A36759E005638E2 /* MBEMesh.m in Sources */ = {isa = PBXBuildFile; fileRef = 83A1BE021A36759E005638E2 /* MBEMesh.m */; };
18-
83A1BE0A1A36759E005638E2 /* MBEMetalView.m in Sources */ = {isa = PBXBuildFile; fileRef = 83A1BE041A36759E005638E2 /* MBEMetalView.m */; };
18+
83A1BE0A1A36759E005638E2 /* MBEMetalViewIOS.m in Sources */ = {isa = PBXBuildFile; fileRef = 83A1BE041A36759E005638E2 /* MBEMetalViewIOS.m */; };
1919
83A1BE0B1A36759E005638E2 /* MBETextureGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 83A1BE061A36759E005638E2 /* MBETextureGenerator.m */; };
2020
83A1BE111A3675D7005638E2 /* MBECubeMesh.m in Sources */ = {isa = PBXBuildFile; fileRef = 83A1BE101A3675D7005638E2 /* MBECubeMesh.m */; };
2121
83A1BE141A37E584005638E2 /* MBERenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = 83A1BE131A37E584005638E2 /* MBERenderer.m */; };
@@ -25,6 +25,15 @@
2525
8451836220D91F9600BF473E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8451836120D91F9600BF473E /* Assets.xcassets */; };
2626
8451836520D91F9600BF473E /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8451836320D91F9600BF473E /* Main.storyboard */; };
2727
8451836820D91F9600BF473E /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 8451836720D91F9600BF473E /* main.m */; };
28+
8451837220D9226800BF473E /* MBEMetalViewMac.m in Sources */ = {isa = PBXBuildFile; fileRef = 8451837020D9226800BF473E /* MBEMetalViewMac.m */; };
29+
8451837520D9236E00BF473E /* MBEMetalView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8451837420D9236E00BF473E /* MBEMetalView.m */; };
30+
8451837620D9236E00BF473E /* MBEMetalView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8451837420D9236E00BF473E /* MBEMetalView.m */; };
31+
8451837820D9274300BF473E /* MBERenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = 83A1BE131A37E584005638E2 /* MBERenderer.m */; };
32+
8451837920D9274300BF473E /* MBEMatrixUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 83A1BE001A36759E005638E2 /* MBEMatrixUtilities.m */; };
33+
8451837A20D9274300BF473E /* MBETextureGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 83A1BE061A36759E005638E2 /* MBETextureGenerator.m */; };
34+
8451837E20D9306300BF473E /* MBECubeMesh.m in Sources */ = {isa = PBXBuildFile; fileRef = 83A1BE101A3675D7005638E2 /* MBECubeMesh.m */; };
35+
8451837F20D9306300BF473E /* MBEMesh.m in Sources */ = {isa = PBXBuildFile; fileRef = 83A1BE021A36759E005638E2 /* MBEMesh.m */; };
36+
8451838020D9309500BF473E /* Shaders.metal in Sources */ = {isa = PBXBuildFile; fileRef = 83A1BE171A37ED7C005638E2 /* Shaders.metal */; };
2837
/* End PBXBuildFile section */
2938

3039
/* Begin PBXFileReference section */
@@ -42,8 +51,8 @@
4251
83A1BE001A36759E005638E2 /* MBEMatrixUtilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MBEMatrixUtilities.m; sourceTree = "<group>"; };
4352
83A1BE011A36759E005638E2 /* MBEMesh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MBEMesh.h; sourceTree = "<group>"; };
4453
83A1BE021A36759E005638E2 /* MBEMesh.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MBEMesh.m; sourceTree = "<group>"; };
45-
83A1BE031A36759E005638E2 /* MBEMetalView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MBEMetalView.h; sourceTree = "<group>"; };
46-
83A1BE041A36759E005638E2 /* MBEMetalView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MBEMetalView.m; sourceTree = "<group>"; };
54+
83A1BE031A36759E005638E2 /* MBEMetalViewIOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MBEMetalViewIOS.h; sourceTree = "<group>"; };
55+
83A1BE041A36759E005638E2 /* MBEMetalViewIOS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MBEMetalViewIOS.m; sourceTree = "<group>"; };
4756
83A1BE051A36759E005638E2 /* MBETextureGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MBETextureGenerator.h; sourceTree = "<group>"; };
4857
83A1BE061A36759E005638E2 /* MBETextureGenerator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MBETextureGenerator.m; sourceTree = "<group>"; };
4958
83A1BE071A36759E005638E2 /* MBETypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MBETypes.h; sourceTree = "<group>"; };
@@ -52,7 +61,7 @@
5261
83A1BE121A37E584005638E2 /* MBERenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MBERenderer.h; sourceTree = "<group>"; };
5362
83A1BE131A37E584005638E2 /* MBERenderer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MBERenderer.m; sourceTree = "<group>"; };
5463
83A1BE171A37ED7C005638E2 /* Shaders.metal */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.metal; path = Shaders.metal; sourceTree = "<group>"; };
55-
8451835920D91F9600BF473E /* Mipmapping-Mac.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Mipmapping-Mac.app"; sourceTree = BUILT_PRODUCTS_DIR; };
64+
8451835920D91F9600BF473E /* Mipmapping.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Mipmapping.app; sourceTree = BUILT_PRODUCTS_DIR; };
5665
8451835B20D91F9600BF473E /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
5766
8451835C20D91F9600BF473E /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
5867
8451835E20D91F9600BF473E /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
@@ -62,6 +71,10 @@
6271
8451836620D91F9600BF473E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
6372
8451836720D91F9600BF473E /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
6473
8451836920D91F9600BF473E /* Mipmapping_Mac.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Mipmapping_Mac.entitlements; sourceTree = "<group>"; };
74+
8451837020D9226800BF473E /* MBEMetalViewMac.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MBEMetalViewMac.m; sourceTree = "<group>"; };
75+
8451837120D9226800BF473E /* MBEMetalViewMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MBEMetalViewMac.h; sourceTree = "<group>"; };
76+
8451837320D9236E00BF473E /* MBEMetalView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MBEMetalView.h; sourceTree = "<group>"; };
77+
8451837420D9236E00BF473E /* MBEMetalView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MBEMetalView.m; sourceTree = "<group>"; };
6578
/* End PBXFileReference section */
6679

6780
/* Begin PBXFrameworksBuildPhase section */
@@ -95,7 +108,7 @@
95108
isa = PBXGroup;
96109
children = (
97110
83A1BDD61A365434005638E2 /* Mipmapping.app */,
98-
8451835920D91F9600BF473E /* Mipmapping-Mac.app */,
111+
8451835920D91F9600BF473E /* Mipmapping.app */,
99112
);
100113
name = Products;
101114
sourceTree = "<group>";
@@ -144,10 +157,12 @@
144157
83A1BE161A37EBBC005638E2 /* User Interface */ = {
145158
isa = PBXGroup;
146159
children = (
147-
83A1BE031A36759E005638E2 /* MBEMetalView.h */,
148-
83A1BE041A36759E005638E2 /* MBEMetalView.m */,
149160
83A1BDDD1A365434005638E2 /* AppDelegate.h */,
150161
83A1BDDE1A365434005638E2 /* AppDelegate.m */,
162+
8451837320D9236E00BF473E /* MBEMetalView.h */,
163+
8451837420D9236E00BF473E /* MBEMetalView.m */,
164+
83A1BE031A36759E005638E2 /* MBEMetalViewIOS.h */,
165+
83A1BE041A36759E005638E2 /* MBEMetalViewIOS.m */,
151166
83A1BDE01A365434005638E2 /* MBEViewController.h */,
152167
83A1BDE11A365434005638E2 /* MBEViewController.m */,
153168
);
@@ -159,13 +174,15 @@
159174
children = (
160175
8451835B20D91F9600BF473E /* AppDelegate.h */,
161176
8451835C20D91F9600BF473E /* AppDelegate.m */,
162-
8451835E20D91F9600BF473E /* ViewController.h */,
163-
8451835F20D91F9600BF473E /* ViewController.m */,
164177
8451836120D91F9600BF473E /* Assets.xcassets */,
165-
8451836320D91F9600BF473E /* Main.storyboard */,
166178
8451836620D91F9600BF473E /* Info.plist */,
167179
8451836720D91F9600BF473E /* main.m */,
180+
8451836320D91F9600BF473E /* Main.storyboard */,
181+
8451837120D9226800BF473E /* MBEMetalViewMac.h */,
182+
8451837020D9226800BF473E /* MBEMetalViewMac.m */,
168183
8451836920D91F9600BF473E /* Mipmapping_Mac.entitlements */,
184+
8451835E20D91F9600BF473E /* ViewController.h */,
185+
8451835F20D91F9600BF473E /* ViewController.m */,
169186
);
170187
path = "Mipmapping-Mac";
171188
sourceTree = "<group>";
@@ -204,7 +221,7 @@
204221
);
205222
name = "Mipmapping-Mac";
206223
productName = "Mipmapping-Mac";
207-
productReference = 8451835920D91F9600BF473E /* Mipmapping-Mac.app */;
224+
productReference = 8451835920D91F9600BF473E /* Mipmapping.app */;
208225
productType = "com.apple.product-type.application";
209226
};
210227
/* End PBXNativeTarget section */
@@ -271,9 +288,10 @@
271288
isa = PBXSourcesBuildPhase;
272289
buildActionMask = 2147483647;
273290
files = (
291+
8451837520D9236E00BF473E /* MBEMetalView.m in Sources */,
274292
83A1BE111A3675D7005638E2 /* MBECubeMesh.m in Sources */,
275293
83A1BE081A36759E005638E2 /* MBEMatrixUtilities.m in Sources */,
276-
83A1BE0A1A36759E005638E2 /* MBEMetalView.m in Sources */,
294+
83A1BE0A1A36759E005638E2 /* MBEMetalViewIOS.m in Sources */,
277295
83A1BDE21A365434005638E2 /* MBEViewController.m in Sources */,
278296
83A1BDDF1A365434005638E2 /* AppDelegate.m in Sources */,
279297
83A1BDDC1A365434005638E2 /* main.m in Sources */,
@@ -291,6 +309,14 @@
291309
8451836020D91F9600BF473E /* ViewController.m in Sources */,
292310
8451836820D91F9600BF473E /* main.m in Sources */,
293311
8451835D20D91F9600BF473E /* AppDelegate.m in Sources */,
312+
8451837920D9274300BF473E /* MBEMatrixUtilities.m in Sources */,
313+
8451837E20D9306300BF473E /* MBECubeMesh.m in Sources */,
314+
8451837A20D9274300BF473E /* MBETextureGenerator.m in Sources */,
315+
8451837820D9274300BF473E /* MBERenderer.m in Sources */,
316+
8451837620D9236E00BF473E /* MBEMetalView.m in Sources */,
317+
8451838020D9309500BF473E /* Shaders.metal in Sources */,
318+
8451837220D9226800BF473E /* MBEMetalViewMac.m in Sources */,
319+
8451837F20D9306300BF473E /* MBEMesh.m in Sources */,
294320
);
295321
runOnlyForDeploymentPostprocessing = 0;
296322
};
@@ -469,7 +495,7 @@
469495
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
470496
MACOSX_DEPLOYMENT_TARGET = 10.13;
471497
PRODUCT_BUNDLE_IDENTIFIER = "com.Metal-by-Example.Mipmapping-Mac";
472-
PRODUCT_NAME = "$(TARGET_NAME)";
498+
PRODUCT_NAME = Mipmapping;
473499
SDKROOT = macosx;
474500
};
475501
name = Debug;
@@ -495,7 +521,7 @@
495521
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
496522
MACOSX_DEPLOYMENT_TARGET = 10.13;
497523
PRODUCT_BUNDLE_IDENTIFIER = "com.Metal-by-Example.Mipmapping-Mac";
498-
PRODUCT_NAME = "$(TARGET_NAME)";
524+
PRODUCT_NAME = Mipmapping;
499525
SDKROOT = macosx;
500526
};
501527
name = Release;

objc/07-Mipmapping/Mipmapping/Images.xcassets/AppIcon.appiconset/Contents.json

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
{
22
"images" : [
3+
{
4+
"idiom" : "iphone",
5+
"size" : "20x20",
6+
"scale" : "2x"
7+
},
8+
{
9+
"idiom" : "iphone",
10+
"size" : "20x20",
11+
"scale" : "3x"
12+
},
313
{
414
"idiom" : "iphone",
515
"size" : "29x29",
@@ -32,6 +42,16 @@
3242
"filename" : "[email protected]",
3343
"scale" : "3x"
3444
},
45+
{
46+
"idiom" : "ipad",
47+
"size" : "20x20",
48+
"scale" : "1x"
49+
},
50+
{
51+
"idiom" : "ipad",
52+
"size" : "20x20",
53+
"scale" : "2x"
54+
},
3555
{
3656
"idiom" : "ipad",
3757
"size" : "29x29",
@@ -63,6 +83,16 @@
6383
"idiom" : "ipad",
6484
"filename" : "[email protected]",
6585
"scale" : "2x"
86+
},
87+
{
88+
"idiom" : "ipad",
89+
"size" : "83.5x83.5",
90+
"scale" : "2x"
91+
},
92+
{
93+
"idiom" : "ios-marketing",
94+
"size" : "1024x1024",
95+
"scale" : "1x"
6696
}
6797
],
6898
"info" : {

objc/07-Mipmapping/Mipmapping/MBEMesh.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
@import UIKit;
1+
@import Foundation;
22
@import Metal;
33

44
#import "MBETypes.h"

0 commit comments

Comments
 (0)