Skip to content

Commit 78a50d9

Browse files
committed
Merge branch 'develop' of github.com:spritebuilder/cocos2d-swift into develop
2 parents 5242e72 + 9c4f1aa commit 78a50d9

File tree

25 files changed

+947
-388
lines changed

25 files changed

+947
-388
lines changed

CCRendererGLSupport.m

Lines changed: 261 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,261 @@
1+
/*
2+
* cocos2d for iPhone: http://www.cocos2d-iphone.org
3+
*
4+
* Copyright (c) 2014 Cocos2D Authors
5+
*
6+
* Permission is hereby granted, free of charge, to any person obtaining a copy
7+
* of this software and associated documentation files (the "Software"), to deal
8+
* in the Software without restriction, including without limitation the rights
9+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10+
* copies of the Software, and to permit persons to whom the Software is
11+
* furnished to do so, subject to the following conditions:
12+
*
13+
* The above copyright notice and this permission notice shall be included in
14+
* all copies or substantial portions of the Software.
15+
*
16+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22+
* THE SOFTWARE.
23+
*/
24+
25+
#import "CCRenderer_private.h"
26+
27+
#import "CCRenderDispatch.h"
28+
29+
30+
static const CCGraphicsBufferType CCGraphicsBufferGLTypes[] = {
31+
GL_ARRAY_BUFFER,
32+
GL_ELEMENT_ARRAY_BUFFER,
33+
};
34+
35+
36+
@interface CCGraphicsBufferGLBasic : CCGraphicsBuffer @end
37+
@implementation CCGraphicsBufferGLBasic {
38+
@public
39+
GLuint _buffer;
40+
GLenum _type;
41+
}
42+
43+
-(instancetype)initWithCapacity:(NSUInteger)capacity elementSize:(size_t)elementSize type:(CCGraphicsBufferType)type;
44+
{
45+
if((self = [super initWithCapacity:capacity elementSize:elementSize type:type])){
46+
glGenBuffers(1, &_buffer);
47+
_type = CCGraphicsBufferGLTypes[type];
48+
49+
[self setup];
50+
}
51+
52+
return self;
53+
}
54+
55+
-(void)setup
56+
{
57+
_ptr = calloc(_capacity, _elementSize);
58+
}
59+
60+
-(void)destroy
61+
{
62+
free(_ptr);
63+
_ptr = NULL;
64+
65+
GLuint buffer = _buffer;
66+
CCRenderDispatch(YES, ^{glDeleteBuffers(1, &buffer);});
67+
}
68+
69+
-(void)resize:(size_t)newCapacity;
70+
{
71+
_ptr = realloc(_ptr, newCapacity*_elementSize);
72+
_capacity = newCapacity;
73+
}
74+
75+
-(void)prepare;
76+
{
77+
_count = 0;
78+
}
79+
80+
-(void)commit;
81+
{
82+
GLenum type = (GLenum)_type;
83+
glBindBuffer(type, _buffer);
84+
glBufferData(type, (GLsizei)(_count*_elementSize), _ptr, GL_STREAM_DRAW);
85+
glBindBuffer(type, 0);
86+
}
87+
88+
@end
89+
90+
91+
#if __CC_PLATFORM_IOS
92+
93+
@interface CCGraphicsBufferGLUnsynchronized : CCGraphicsBufferGLBasic @end
94+
@implementation CCGraphicsBufferGLUnsynchronized {
95+
GLvoid *(*_mapBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
96+
GLvoid (*_flushMappedBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length);
97+
GLboolean (*_unmapBuffer)(GLenum target);
98+
}
99+
100+
#define BUFFER_ACCESS_WRITE (GL_MAP_WRITE_BIT_EXT | GL_MAP_UNSYNCHRONIZED_BIT_EXT | GL_MAP_INVALIDATE_BUFFER_BIT_EXT | GL_MAP_FLUSH_EXPLICIT_BIT_EXT)
101+
#define BUFFER_ACCESS_READ (GL_MAP_READ_BIT_EXT)
102+
103+
-(instancetype)initWithCapacity:(NSUInteger)capacity elementSize:(size_t)elementSize type:(CCGraphicsBufferType)type
104+
{
105+
if((self = [super initWithCapacity:capacity elementSize:elementSize type:type])){
106+
// TODO Does Android look up GL functions by name like Windows/Linux?
107+
_mapBufferRange = glMapBufferRangeEXT;
108+
_flushMappedBufferRange = glFlushMappedBufferRangeEXT;
109+
_unmapBuffer = glUnmapBufferOES;
110+
}
111+
112+
return self;
113+
}
114+
115+
-(void)setup
116+
{
117+
glBindBuffer(_type, _buffer);
118+
glBufferData(_type, _capacity*_elementSize, NULL, GL_STREAM_DRAW);
119+
glBindBuffer(_type, 0);
120+
CC_CHECK_GL_ERROR_DEBUG();
121+
}
122+
123+
-(void)destroy
124+
{
125+
GLuint buffer = _buffer;
126+
CCRenderDispatch(YES, ^{glDeleteBuffers(1, &buffer);});
127+
}
128+
129+
-(void)resize:(size_t)newCapacity
130+
{
131+
// This is a little tricky.
132+
// Need to resize the existing GL buffer object without creating a new name.
133+
134+
// Make the buffer readable.
135+
glBindBuffer(_type, _buffer);
136+
GLsizei oldLength = (GLsizei)(_count*_elementSize);
137+
_flushMappedBufferRange(_type, 0, oldLength);
138+
_unmapBuffer(_type);
139+
void *oldBufferPtr = _mapBufferRange(_type, 0, oldLength, BUFFER_ACCESS_READ);
140+
141+
// Copy the old contents into a temp buffer.
142+
GLsizei newLength = (GLsizei)(newCapacity*_elementSize);
143+
void *tempBufferPtr = malloc(newLength);
144+
memcpy(tempBufferPtr, oldBufferPtr, oldLength);
145+
146+
// Copy that into a new GL buffer.
147+
_unmapBuffer(_type);
148+
glBufferData(_type, newLength, tempBufferPtr, GL_STREAM_DRAW);
149+
void *newBufferPtr = _mapBufferRange(_type, 0, newLength, BUFFER_ACCESS_WRITE);
150+
151+
// Cleanup.
152+
free(tempBufferPtr);
153+
glBindBuffer(_type, 0);
154+
CC_CHECK_GL_ERROR_DEBUG();
155+
156+
// Update values.
157+
_ptr = newBufferPtr;
158+
_capacity = newCapacity;
159+
}
160+
161+
-(void)prepare
162+
{
163+
_count = 0;
164+
165+
GLenum target = (GLenum)_type;
166+
glBindBuffer(_type, _buffer);
167+
_ptr = _mapBufferRange(target, 0, (GLsizei)(_capacity*_elementSize), BUFFER_ACCESS_WRITE);
168+
glBindBuffer(target, 0);
169+
CC_CHECK_GL_ERROR_DEBUG();
170+
}
171+
172+
-(void)commit
173+
{
174+
glBindBuffer(_type, _buffer);
175+
_flushMappedBufferRange(_type, 0, (GLsizei)(_count*_elementSize));
176+
_unmapBuffer(_type);
177+
glBindBuffer(_type, 0);
178+
CC_CHECK_GL_ERROR_DEBUG();
179+
180+
_ptr = NULL;
181+
}
182+
183+
@end
184+
185+
#endif
186+
187+
188+
@interface CCGraphicsBufferBindingsGL : NSObject <CCGraphicsBufferBindings> @end
189+
@implementation CCGraphicsBufferBindingsGL {
190+
GLuint _vao;
191+
}
192+
193+
-(instancetype)initWithVertexBuffer:(CCGraphicsBufferGLBasic *)vertexBuffer indexBuffer:(CCGraphicsBufferGLBasic *)indexBuffer
194+
{
195+
NSAssert([vertexBuffer isKindOfClass:[CCGraphicsBufferGLBasic class]], @"Wrong kind of buffer!");
196+
NSAssert([indexBuffer isKindOfClass:[CCGraphicsBufferGLBasic class]], @"Wrong kind of buffer!");
197+
198+
if((self = [super init])){
199+
CCGL_DEBUG_PUSH_GROUP_MARKER("CCGraphicsBufferBindingsGL: Creating VAO");
200+
201+
glGenVertexArrays(1, &_vao);
202+
glBindVertexArray(_vao);
203+
204+
glEnableVertexAttribArray(CCShaderAttributePosition);
205+
glEnableVertexAttribArray(CCShaderAttributeTexCoord1);
206+
glEnableVertexAttribArray(CCShaderAttributeTexCoord2);
207+
glEnableVertexAttribArray(CCShaderAttributeColor);
208+
209+
glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer->_buffer);
210+
glVertexAttribPointer(CCShaderAttributePosition, 4, GL_FLOAT, GL_FALSE, sizeof(CCVertex), (void *)offsetof(CCVertex, position));
211+
glVertexAttribPointer(CCShaderAttributeTexCoord1, 2, GL_FLOAT, GL_FALSE, sizeof(CCVertex), (void *)offsetof(CCVertex, texCoord1));
212+
glVertexAttribPointer(CCShaderAttributeTexCoord2, 2, GL_FLOAT, GL_FALSE, sizeof(CCVertex), (void *)offsetof(CCVertex, texCoord2));
213+
glVertexAttribPointer(CCShaderAttributeColor, 4, GL_FLOAT, GL_FALSE, sizeof(CCVertex), (void *)offsetof(CCVertex, color));
214+
215+
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indexBuffer->_buffer);
216+
217+
glBindVertexArray(0);
218+
glBindBuffer(GL_ARRAY_BUFFER, 0);
219+
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
220+
221+
CCGL_DEBUG_POP_GROUP_MARKER();
222+
}
223+
224+
return self;
225+
}
226+
227+
-(void)dealloc
228+
{
229+
GLuint vao = _vao;
230+
CCRenderDispatch(YES, ^{glDeleteVertexArrays(1, &vao);});
231+
}
232+
233+
-(void)bind:(BOOL)bind
234+
{
235+
CCGL_DEBUG_INSERT_EVENT_MARKER("CCGraphicsBufferBindingsGL: Bind VAO");
236+
glBindVertexArray(bind ? _vao : 0);
237+
}
238+
239+
@end
240+
241+
242+
@interface CCRenderCommandDrawGL : CCRenderCommandDraw @end
243+
@implementation CCRenderCommandDrawGL
244+
245+
static const CCRenderCommandDrawMode GLDrawModes[] = {
246+
GL_TRIANGLES,
247+
GL_LINES,
248+
};
249+
250+
-(void)invokeOnRenderer:(CCRenderer *)renderer
251+
{
252+
CCGL_DEBUG_PUSH_GROUP_MARKER("CCRendererCommandDraw: Invoke");
253+
254+
[renderer setRenderState:_renderState];
255+
glDrawElements(GLDrawModes[_mode], (GLsizei)_count, GL_UNSIGNED_SHORT, (GLvoid *)(_first*sizeof(GLushort)));
256+
CC_INCREMENT_GL_DRAWS(1);
257+
258+
CCGL_DEBUG_POP_GROUP_MARKER();
259+
}
260+
261+
@end

cocos2d-ios.xcodeproj/project.pbxproj

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,7 @@
356356
D2DDB0A619805E8400233D80 /* CCQuaternion.m in Sources */ = {isa = PBXBuildFile; fileRef = D2DDB09119805E8400233D80 /* CCQuaternion.m */; };
357357
D2DDB0A719805E8400233D80 /* CCMatrix3.m in Sources */ = {isa = PBXBuildFile; fileRef = D2DDB09219805E8400233D80 /* CCMatrix3.m */; };
358358
D2DDB0A819805E8400233D80 /* CCMatrix3.m in Sources */ = {isa = PBXBuildFile; fileRef = D2DDB09219805E8400233D80 /* CCMatrix3.m */; };
359+
D2EC6039199D9F82001A15E9 /* CCRendererGLSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = D36DFA2719996EC500DEC135 /* CCRendererGLSupport.m */; };
359360
D2FEB611194F6C9E00FC0574 /* CCBLocalizationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = B7D273041822F4AA0054849B /* CCBLocalizationManager.h */; };
360361
D2FEB612194F6C9E00FC0574 /* CCAction.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F2520DFDEAFF00C013A5 /* CCAction.h */; };
361362
D2FEB613194F6C9E00FC0574 /* CCNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 5018F2540DFDEAFF00C013A5 /* CCNode.h */; };
@@ -628,10 +629,13 @@
628629
D2FEB747194F6C9E00FC0574 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
629630
D2FEB749194F6C9E00FC0574 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D3623EB0D0F72F000981E51 /* CoreGraphics.framework */; };
630631
D309055018AC23110081BF11 /* CCRenderer_private.h in Headers */ = {isa = PBXBuildFile; fileRef = D309054F18AC23110081BF11 /* CCRenderer_private.h */; };
632+
D31C795019994126007921E1 /* CCMetalSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = D31C794F19994126007921E1 /* CCMetalSupport.m */; };
633+
D31C795219994197007921E1 /* CCMetalSupport_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D31C795119994197007921E1 /* CCMetalSupport_Private.h */; };
631634
D33803E318032ECE0072D8FE /* CCPhysicsBody.m in Sources */ = {isa = PBXBuildFile; fileRef = D33803E218032ECE0072D8FE /* CCPhysicsBody.m */; };
632635
D33803E618032F390072D8FE /* CCPhysicsNode.m in Sources */ = {isa = PBXBuildFile; fileRef = D33803E518032F390072D8FE /* CCPhysicsNode.m */; };
633636
D33803EA180331A90072D8FE /* CCPhysicsJoint.m in Sources */ = {isa = PBXBuildFile; fileRef = D33803E9180331A90072D8FE /* CCPhysicsJoint.m */; };
634637
D36D31B718BD3CAA00E45F08 /* CCProgressNode.m in Sources */ = {isa = PBXBuildFile; fileRef = B791E85C182074C500DAE1D7 /* CCProgressNode.m */; };
638+
D36DFA2819996EC500DEC135 /* CCRendererGLSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = D36DFA2719996EC500DEC135 /* CCRendererGLSupport.m */; };
635639
D37D197718B6665700B23FDE /* CCTiledMap.m in Sources */ = {isa = PBXBuildFile; fileRef = 509D0817101E4FCE007E1749 /* CCTiledMap.m */; };
636640
D37D197818B6665700B23FDE /* CCTiledMapLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 50D2AC9210E90DFA0068ECEB /* CCTiledMapLayer.m */; };
637641
D37D197918B6665700B23FDE /* CCTiledMapObjectGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 50D2AC9410E90DFA0068ECEB /* CCTiledMapObjectGroup.m */; };
@@ -1066,13 +1070,16 @@
10661070
D2DDB09219805E8400233D80 /* CCMatrix3.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCMatrix3.m; path = Platforms/Android/CCMatrix3.m; sourceTree = "<group>"; };
10671071
D2FEB74F194F6C9E00FC0574 /* libcocos2dAndroid.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libcocos2dAndroid.a; sourceTree = BUILT_PRODUCTS_DIR; };
10681072
D309054F18AC23110081BF11 /* CCRenderer_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCRenderer_private.h; sourceTree = "<group>"; };
1073+
D31C794F19994126007921E1 /* CCMetalSupport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCMetalSupport.m; sourceTree = "<group>"; };
1074+
D31C795119994197007921E1 /* CCMetalSupport_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCMetalSupport_Private.h; sourceTree = "<group>"; };
10691075
D33803DC18032E4F0072D8FE /* CCPhysics+ObjectiveChipmunk.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CCPhysics+ObjectiveChipmunk.h"; sourceTree = "<group>"; };
10701076
D33803E218032ECE0072D8FE /* CCPhysicsBody.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPhysicsBody.m; sourceTree = "<group>"; };
10711077
D33803E418032F250072D8FE /* CCPhysicsBody.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CCPhysicsBody.h; sourceTree = "<group>"; };
10721078
D33803E518032F390072D8FE /* CCPhysicsNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPhysicsNode.m; sourceTree = "<group>"; };
10731079
D33803E718032F4A0072D8FE /* CCPhysicsNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CCPhysicsNode.h; sourceTree = "<group>"; };
10741080
D33803E81803319F0072D8FE /* CCPhysicsJoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CCPhysicsJoint.h; sourceTree = "<group>"; };
10751081
D33803E9180331A90072D8FE /* CCPhysicsJoint.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPhysicsJoint.m; sourceTree = "<group>"; };
1082+
D36DFA2719996EC500DEC135 /* CCRendererGLSupport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CCRendererGLSupport.m; path = ../CCRendererGLSupport.m; sourceTree = "<group>"; };
10761083
D38058181889AD6000822437 /* CCRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCRenderer.h; sourceTree = "<group>"; };
10771084
D38058191889AD6000822437 /* CCRenderer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCRenderer.m; sourceTree = "<group>"; };
10781085
D380581E1889CE7700822437 /* CCCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCCache.h; path = ../CCCache.h; sourceTree = "<group>"; };
@@ -1089,6 +1096,7 @@
10891096
D39FA9C718C1BC6B00441627 /* CCShader_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCShader_Private.h; sourceTree = "<group>"; };
10901097
D3A2E7D0181E12750033614C /* CCPhysicsShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPhysicsShape.h; sourceTree = "<group>"; };
10911098
D3A2E7D1181E12750033614C /* CCPhysicsShape.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CCPhysicsShape.m; sourceTree = "<group>"; };
1099+
D3C12815199D40AC005D2119 /* CCShaders.metal */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.metal; path = CCShaders.metal; sourceTree = "<group>"; };
10921100
E01E6D8A121F130E001A484F /* CCLabelBMFont.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = CCLabelBMFont.h; sourceTree = "<group>"; };
10931101
E01E6D8B121F130E001A484F /* CCLabelBMFont.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = CCLabelBMFont.m; sourceTree = "<group>"; };
10941102
E02BB6D4126CA93A006E46A2 /* CCAnimationCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCAnimationCache.h; sourceTree = "<group>"; };
@@ -1266,6 +1274,7 @@
12661274
D38058181889AD6000822437 /* CCRenderer.h */,
12671275
D309054F18AC23110081BF11 /* CCRenderer_private.h */,
12681276
D38058191889AD6000822437 /* CCRenderer.m */,
1277+
D36DFA2719996EC500DEC135 /* CCRendererGLSupport.m */,
12691278
D3903B0C1995288D003AA81A /* CCNoARC.m */,
12701279
D3903B0E199528A0003AA81A /* CCRenderDispatch.h */,
12711280
D3903B0F199528A0003AA81A /* CCRenderDispatch.m */,
@@ -1900,6 +1909,7 @@
19001909
E0EAD0E9121F4B4600B0C81C /* iOS */ = {
19011910
isa = PBXGroup;
19021911
children = (
1912+
D3C12815199D40AC005D2119 /* CCShaders.metal */,
19031913
D3903B12199528B6003AA81A /* CCMetalView.h */,
19041914
D3903B13199528B6003AA81A /* CCMetalView.m */,
19051915
B78AE46A17E7AF6C0028BE0B /* UITouch+CC.h */,
@@ -1915,6 +1925,8 @@
19151925
B7E775CF18527EF0004221AA /* CCAppDelegate.m */,
19161926
D23C5CB2194BC108007CA669 /* CCTouchIOS.h */,
19171927
D23C5CB3194BC108007CA669 /* CCTouchIOS.m */,
1928+
D31C795119994197007921E1 /* CCMetalSupport_Private.h */,
1929+
D31C794F19994126007921E1 /* CCMetalSupport.m */,
19181930
);
19191931
path = iOS;
19201932
sourceTree = "<group>";
@@ -2005,6 +2017,7 @@
20052017
5B063DD419637443002B1CDE /* ALWeakElement.h in Headers */,
20062018
509D0818101E4FCE007E1749 /* CCTiledMap.h in Headers */,
20072019
50F29F6F102053370046CA73 /* base64.h in Headers */,
2020+
D31C795219994197007921E1 /* CCMetalSupport_Private.h in Headers */,
20082021
50F2A105102094550046CA73 /* ZipUtils.h in Headers */,
20092022
50CFAC391023660000175934 /* CCTMXXMLParser.h in Headers */,
20102023
50316AA610291280003ACFE7 /* CCRenderTexture.h in Headers */,
@@ -2460,6 +2473,7 @@
24602473
5018F2780DFDEAFF00C013A5 /* CCScene.m in Sources */,
24612474
5B063DD119637291002B1CDE /* ALWeakDictionary.m in Sources */,
24622475
5018F27E0DFDEAFF00C013A5 /* CCTextureCache.m in Sources */,
2476+
D31C795019994126007921E1 /* CCMetalSupport.m in Sources */,
24632477
B7705FE51831A07B0043CC67 /* ALChannelSource.m in Sources */,
24642478
D2DDB09D19805E8400233D80 /* CCMatrix4.m in Sources */,
24652479
5038B6B30E196CD8009A621E /* CCParticleSystemBase.m in Sources */,
@@ -2480,6 +2494,7 @@
24802494
D37D197A18B6665700B23FDE /* CCTMXXMLParser.m in Sources */,
24812495
509A79980F6188420032F449 /* CCSprite.m in Sources */,
24822496
D37D197718B6665700B23FDE /* CCTiledMap.m in Sources */,
2497+
D36DFA2819996EC500DEC135 /* CCRendererGLSupport.m in Sources */,
24832498
50C508C70F7C194400799124 /* CCFileUtils.m in Sources */,
24842499
B7705FD31831A07B0043CC67 /* OALAudioActions.m in Sources */,
24852500
D25B4F4C194A499700DA9D60 /* CCTouch.m in Sources */,
@@ -2642,6 +2657,7 @@
26422657
D2FEB6D9194F6C9E00FC0574 /* CCFileUtils.m in Sources */,
26432658
D2FEB6DA194F6C9E00FC0574 /* OALAudioActions.m in Sources */,
26442659
D2FEB6DB194F6C9E00FC0574 /* CCTouch.m in Sources */,
2660+
D2EC6039199D9F82001A15E9 /* CCRendererGLSupport.m in Sources */,
26452661
D2FEB6DC194F6C9E00FC0574 /* CCEffectNode.m in Sources */,
26462662
D2FEB6DD194F6C9E00FC0574 /* CCTiledMapObjectGroup.m in Sources */,
26472663
D2FEB6DE194F6C9E00FC0574 /* CGPointExtension.m in Sources */,

0 commit comments

Comments
 (0)