1
0
mirror of https://github.com/thes3m/XNI synced 2024-12-26 13:26:06 +01:00

Starting with implementation of graphics device.

git-svn-id: http://xni.googlecode.com/svn/XNI@9 ac433895-eea3-a490-d80a-17149a75e588
This commit is contained in:
Matej Jan 2010-07-27 17:42:29 +00:00
parent fbfd1e7ab6
commit e87a140ad5
16 changed files with 484 additions and 2 deletions

View File

@ -0,0 +1,49 @@
//
// Color.h
// XNI
//
// Created by Matej Jan on 27.7.10.
// Copyright 2010 Retronator. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Retronator.Xni.Framework.classes.h"
@interface Color : NSObject {
uint packedValue;
}
- (id) initWithRed:(int)red Green:(int)green Blue:(int)blue Alpha:(int)alpha;
- (id) initWithRed:(int)red Green:(int)green Blue:(int)blue;
- (id) initWithPercentageRed:(float)red Green:(float)green Blue:(float)blue Alpha:(float)alpha;
- (id) initWithPercentageRed:(float)red Green:(float)green Blue:(float)blue;
- (id) initWithColor:(Color*)color;
+ (Color*) colorWithRed:(int)red Green:(int)green Blue:(int)blue Alpha:(int)alpha;
+ (Color*) colorWithRed:(int)red Green:(int)green Blue:(int)blue;
+ (Color*) colorWithPercentageRed:(float)red Green:(float)green Blue:(float)blue Alpha:(float)alpha;
+ (Color*) colorWithPercentageRed:(float)red Green:(float)green Blue:(float)blue;
+ (Color*) colorWithColor:(Color*)color;
@property (nonatomic) Byte r;
@property (nonatomic) Byte g;
@property (nonatomic) Byte b;
@property (nonatomic) Byte a;
@property (nonatomic) uint packedValue;
//- (Vector3*) toVector3;
// Constants
+ (Color*) black;
+ (Color*) blue;
+ (Color*) red;
+ (Color*) fuchsia;
+ (Color*) lime;
+ (Color*) cyan;
+ (Color*) yellow;
+ (Color*) white;
+ (Color*) transparent;
@end

View File

@ -0,0 +1,99 @@
//
// Color.m
// XNI
//
// Created by Matej Jan on 27.7.10.
// Copyright 2010 Retronator. All rights reserved.
//
#import "Color.h"
#define CLAMP_TO_BYTE(X) (X < 0 ? 0 : (X > 255 ? 255 : X))
@implementation Color
// CONSTRUCTORS
- (id) initWithRed:(int)red Green:(int)green Blue:(int)blue Alpha:(int)alpha {
if (self = [super init]) {
red = CLAMP_TO_BYTE(red);
green = CLAMP_TO_BYTE(green) << 8;
blue = CLAMP_TO_BYTE(blue) << 16;
alpha = CLAMP_TO_BYTE(alpha) << 24;
packedValue = red | green | blue | alpha;
}
return self;
}
- (id) initWithRed:(int)red Green:(int)green Blue:(int)blue {
return [self initWithRed:red Green:green Blue:blue Alpha:255];
}
- (id) initWithPercentageRed:(float)red Green:(float)green Blue:(float)blue Alpha:(float)alpha {
return [self initWithRed:255 * red Green:255 * green Blue:255 * blue Alpha:255 * alpha];
}
- (id) initWithPercentageRed:(float)red Green:(float)green Blue:(float)blue {
return [self initWithPercentageRed:red Green:green Blue:blue Alpha:1];
}
- (id) initWithColor:(Color*)color {
return [self initWithRed:color.r Green:color.g Blue:color.b Alpha:color.a];
}
+ (Color*) colorWithRed:(int)red Green:(int)green Blue:(int)blue Alpha:(int)alpha {
return [[[Color alloc] initWithRed:red Green:green Blue:blue Alpha:alpha] autorelease];
}
+ (Color*) colorWithRed:(int)red Green:(int)green Blue:(int)blue {
return [[[Color alloc] initWithRed:red Green:green Blue:blue] autorelease];
}
+ (Color*) colorWithPercentageRed:(float)red Green:(float)green Blue:(float)blue Alpha:(float)alpha {
return [[[Color alloc] initWithPercentageRed:red Green:green Blue:blue Alpha:alpha] autorelease];
}
+ (Color*) colorWithPercentageRed:(float)red Green:(float)green Blue:(float)blue {
return [[[Color alloc] initWithPercentageRed:red Green:green Blue:blue] autorelease];
}
+ (Color*) colorWithColor:(Color *)color {
return [[[Color alloc] initWithColor:color] autorelease];
}
// PROPERTIES
- (Byte) r {return (Byte)packedValue;}
- (void) setR:(Byte)value {packedValue = packedValue & 0xffffff00 | value;}
- (Byte) g {return (Byte)(packedValue >> 8);}
- (void) setG:(Byte)value {packedValue = packedValue & 0xffff00ff | ((uint)value << 8);}
- (Byte) b {return (Byte)(packedValue >> 16);}
- (void) setB:(Byte)value {packedValue = packedValue & 0xff00ffff | ((uint)value << 16);}
- (Byte) a {return (Byte)(packedValue >> 24);}
- (void) setA:(Byte)value {packedValue = packedValue & 0x00ffffff | ((uint)value << 24);}
@synthesize packedValue;
// METHODS
/*- (Vector3 *) toVector3 {
return [Vector3 vectorWithX:data.red Y:data.green Z:data.blue];
}*/
// Constants
+ (Color*) black {return [Color colorWithRed:0 Green:0 Blue:0];}
+ (Color*) blue {return [Color colorWithRed:0 Green:0 Blue:255];}
+ (Color*) red {return [Color colorWithRed:255 Green:0 Blue:0];}
+ (Color*) fuchsia {return [Color colorWithRed:255 Green:0 Blue:255];}
+ (Color*) lime {return [Color colorWithRed:0 Green:255 Blue:0];}
+ (Color*) cyan {return [Color colorWithRed:0 Green:255 Blue:255];}
+ (Color*) yellow {return [Color colorWithRed:255 Green:255 Blue:0];}
+ (Color*) white {return [Color colorWithRed:255 Green:255 Blue:255];}
+ (Color*) transparent {return [Color colorWithRed:0 Green:0 Blue:0 Alpha:0];}
@end

View File

@ -44,7 +44,7 @@
}
- (GraphicsDevice*) graphicsDevice {
return [graphicsDeviceService graphicsDevice];
return [graphicsDeviceService graphicsDevice];
}
@synthesize isActive;

View File

@ -0,0 +1,89 @@
#import <OpenGLES/ES1/gl.h>
#import <OpenGLES/ES2/gl.h>
typedef enum {
DataTypeUnsignedByte = GL_UNSIGNED_BYTE,
DataTypeByte = GL_BYTE,
DataTypeUnsignedShort = GL_UNSIGNED_SHORT,
DataTypeShort = GL_SHORT,
DataTypeFixed = GL_FIXED,
DataTypeFloat = GL_FLOAT
} DataType;
typedef enum {
CompareFunctionAlways = GL_ALWAYS,
CompareFunctionEqual = GL_EQUAL,
CompareFunctionGreater = GL_GREATER,
CompareFunctionGreaterEqual = GL_GEQUAL,
CompareFunctionLess = GL_LESS,
CompareFunctionLessEqual = GL_LEQUAL,
CompareFunctionNever = GL_NEVER,
CompareFunctionNotEqual = GL_NOTEQUAL
} CompareFunction;
typedef enum {
ClearOptionsDepthBuffer = GL_DEPTH_BUFFER_BIT,
ClearOptionsStencil = GL_STENCIL_BUFFER_BIT,
ClearOptionsTarget = GL_COLOR_BUFFER_BIT
} ClearOptions;
typedef enum {
FogModeNone = 0,
FogModeLinear = GL_LINEAR,
FogModeExponent = GL_EXP,
FogModeExponentSquared = GL_EXP2
} FogMode;
typedef enum {
IndexElementSizeEightBits = 1,
IndexElementSizeSixteenBits = 2,
} IndexElementSize;
typedef enum {
ResourceUsageStatic = GL_STATIC_DRAW,
ResourceUsageDynamic = GL_DYNAMIC_DRAW
} ResourceUsage;
typedef enum {
ResourceTypeTexture2D = GL_TEXTURE_2D,
ResourceTypeIndexBuffer = GL_ELEMENT_ARRAY_BUFFER,
ResourceTypeVertexBuffer = GL_ARRAY_BUFFER
} ResourceType;
typedef enum {
VertexElementFormatSingle,
VertexElementFormatVector2,
VertexElementFormatVector3,
VertexElementFormatVector4,
VertexElementFormatHalfVector2,
VertexElementFormatHalfVector4,
VertexElementFormatRgba64,
VertexElementFormatColor,
VertexElementFormatRgba32,
VertexElementFormatRg32,
VertexElementFormatNormalizedShort2,
VertexElementFormatNormalizedShort4,
VertexElementFormatNormalized101010,
VertexElementFormatShort2,
VertexElementFormatShort4,
VertexElementFormatByte4,
VertexElementFormatUInt101010,
VertexElementFormatUnused
} VertexElementFormat;
typedef enum {
VertexElementUsagePosition = GL_VERTEX_ARRAY,
VertexElementUsageNormal = GL_NORMAL_ARRAY,
VertexElementUsageColor = GL_COLOR_ARRAY,
VertexElementUsageTextureCoordinate = GL_TEXTURE_COORD_ARRAY,
VertexElementUsagePointSize = GL_POINT_SIZE_ARRAY_OES
} VertexElementUsage;
typedef enum {
PrimitiveTypePointList = GL_POINTS,
PrimitiveTypeLineList = GL_LINES,
PrimitiveTypeLineStrip = GL_LINE_STRIP,
PrimitiveTypeTriangleList = GL_TRIANGLES,
PrimitiveTypeTriangleStrip = GL_TRIANGLE_STRIP,
PrimitiveTypeTriangleFan = GL_TRIANGLE_FAN
} PrimitiveType;

View File

@ -0,0 +1,41 @@
//
// GraphicsDevice.h
// XNI
//
// Created by Matej Jan on 27.7.10.
// Copyright 2010 Retronator. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <QuartzCore/QuartzCore.h>
#import <OpenGLES/ES1/glext.h>
#import <OpenGLES/ES2/glext.h>
#import "Retronator.Xni.Framework.classes.h"
#import "Retronator.Xni.Framework.Graphics.classes.h"
@interface GraphicsDevice : NSObject {
Game *game;
EAGLContext *context;
// The pixel dimensions of the CAEAGLLayer
GLint backingWidth;
GLint backingHeight;
// The OpenGL names for the buffers used to render to this view
GLuint defaultFramebuffer, colorRenderbuffer, depthRenderbuffer;
}
- (id) initWithGame:(Game*) theGame;
// Presentation
- (void) reset;
- (void) present;
// Render buffers
- (void) clearWithColor:(Color*)color;
- (void) clearWithOptions:(ClearOptions)options color:(Color*)color depth:(float)depth stencil:(int)stencil;
- (EAGLContext*) createContext;
@end

View File

@ -0,0 +1,83 @@
//
// GraphicsDevice.m
// XNI
//
// Created by Matej Jan on 27.7.10.
// Copyright 2010 Retronator. All rights reserved.
//
#import "GraphicsDevice.h"
#import "Retronator.Xni.Framework.h"
#import "Retronator.Xni.Framework.Graphics.h"
@implementation GraphicsDevice
- (id) initWithGame:(Game*)theGame
{
if (self = [super init])
{
game = theGame;
// Create an OpenGL ES context
context = [self createContext];
if (!context || ![EAGLContext setCurrentContext:context]) {
[self release];
return nil;
}
// Create default framebuffer object.
glGenFramebuffersOES(1, &defaultFramebuffer);
glBindFramebufferOES(GL_FRAMEBUFFER_OES, defaultFramebuffer);
// Create the color buffer.
glGenRenderbuffersOES(1, &colorRenderbuffer);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, colorRenderbuffer);
glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, GL_RENDERBUFFER_OES, colorRenderbuffer);
// Create the depth buffer.
glGenRenderbuffersOES(1, &depthRenderbuffer);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, depthRenderbuffer);
glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_DEPTH_ATTACHMENT_OES, GL_RENDERBUFFER_OES, depthRenderbuffer);
// Do the initial reset.
[self reset];
}
return self;
}
// Presentation
- (void) reset {
CAEAGLLayer *layer = (CAEAGLLayer*)game.window.handle;
// Allocate color buffer backing based on the current layer size.
glBindRenderbufferOES(GL_RENDERBUFFER_OES, colorRenderbuffer);
[context renderbufferStorage:GL_RENDERBUFFER_OES fromDrawable:layer];
glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_WIDTH_OES, &backingWidth);
glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_HEIGHT_OES, &backingHeight);
glViewport(0, 0, backingWidth, backingHeight);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, depthRenderbuffer);
glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_DEPTH_COMPONENT16_OES, backingWidth, backingHeight);
if (glCheckFramebufferStatusOES(GL_FRAMEBUFFER_OES) != GL_FRAMEBUFFER_COMPLETE_OES){
NSLog(@"Failed to make complete framebuffer object %x.", glCheckFramebufferStatusOES(GL_FRAMEBUFFER_OES));
} else {
NSLog(@"Created a device with dimensions: %ix%i.", backingWidth, backingHeight);
}
}
- (void) present {
glBindRenderbufferOES(GL_RENDERBUFFER_OES, colorRenderbuffer);
[context presentRenderbuffer:GL_RENDERBUFFER_OES];
}
// Render buffers
- (void) clearWithColor:(Color*)color {}
- (void) clearWithOptions:(ClearOptions)options color:(Color*)color depth:(float)depth stencil:(int)stencil {}
- (EAGLContext*) createContext { return nil; }
@end

View File

@ -0,0 +1,17 @@
//
// HiDefGraphicsDevice.h
// XNI
//
// Created by Matej Jan on 27.7.10.
// Copyright 2010 Retronator. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "GraphicsDevice.h"
@interface HiDefGraphicsDevice : GraphicsDevice {
}
@end

View File

@ -0,0 +1,17 @@
//
// HiDefGraphicsDevice.m
// XNI
//
// Created by Matej Jan on 27.7.10.
// Copyright 2010 Retronator. All rights reserved.
//
#import "HiDefGraphicsDevice.h"
@implementation HiDefGraphicsDevice
- (EAGLContext*) createContext {
return [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
}
@end

View File

@ -0,0 +1,14 @@
#import "System.h"
#import "Retronator.Xni.Framework.Graphics.classes.h"
@protocol IGraphicsDeviceService
@property (nonatomic, readonly) GraphicsDevice *graphicsDevice;
@property (nonatomic, readonly) Event *deviceCreated;
@property (nonatomic, readonly) Event *deviceDisposing;
@property (nonatomic, readonly) Event *deviceReseting;
@property (nonatomic, readonly) Event *deviceReset;
@end

View File

@ -0,0 +1,18 @@
//
// ReachGraphicsDevice.h
// XNI
//
// Created by Matej Jan on 27.7.10.
// Copyright 2010 Retronator. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "GraphicsDevice.h"
@interface ReachGraphicsDevice : GraphicsDevice {
}
@end

View File

@ -0,0 +1,17 @@
//
// ReachGraphicsDevice.m
// XNI
//
// Created by Matej Jan on 27.7.10.
// Copyright 2010 Retronator. All rights reserved.
//
#import "ReachGraphicsDevice.h"
@implementation ReachGraphicsDevice
- (EAGLContext*) createContext {
return [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES1];
}
@end

View File

@ -0,0 +1,4 @@
#import "Enums.h"
@protocol IGraphicsDeviceService;
@class GraphicsDevice, ReachGraphicsDevice, HiDefGraphicsDevice;

View File

@ -0,0 +1,5 @@
#import "IGraphicsDeviceService.h"
#import "GraphicsDevice.h"
#import "ReachGraphicsDevice.h"
#import "HiDefGraphicsDevice.h"

View File

@ -2,7 +2,7 @@
// Data structures
#import "RectangleStruct.h"
@class Rectangle;
@class Rectangle, Color;
// Game
#import "DisplayOrientation.h"

View File

@ -2,6 +2,7 @@
// Data structures
#import "Rectangle.h"
#import "Color.h"
// Game
#import "IGraphicsDeviceManager.h"

View File

@ -30,6 +30,13 @@
B5DDE85D11FF1326000DB38B /* GraphicsDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = B5DDE85B11FF1326000DB38B /* GraphicsDevice.m */; };
B5DDE89611FF16A3000DB38B /* Protocols.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DDE89411FF16A3000DB38B /* Protocols.h */; };
B5DDE89711FF16A3000DB38B /* Protocols.m in Sources */ = {isa = PBXBuildFile; fileRef = B5DDE89511FF16A3000DB38B /* Protocols.m */; };
B5DDE8C311FF29E8000DB38B /* ReachGraphicsDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DDE8C111FF29E8000DB38B /* ReachGraphicsDevice.h */; };
B5DDE8C411FF29E8000DB38B /* ReachGraphicsDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = B5DDE8C211FF29E8000DB38B /* ReachGraphicsDevice.m */; };
B5DDE8C711FF2A23000DB38B /* HiDefGraphicsDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DDE8C511FF2A23000DB38B /* HiDefGraphicsDevice.h */; };
B5DDE8C811FF2A23000DB38B /* HiDefGraphicsDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = B5DDE8C611FF2A23000DB38B /* HiDefGraphicsDevice.m */; };
B5DDE8CA11FF2AD6000DB38B /* Enums.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DDE8C911FF2AD6000DB38B /* Enums.h */; };
B5DDE90911FF352E000DB38B /* Color.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DDE90711FF352E000DB38B /* Color.h */; };
B5DDE90A11FF352E000DB38B /* Color.m in Sources */ = {isa = PBXBuildFile; fileRef = B5DDE90811FF352E000DB38B /* Color.m */; };
B5DE189811F8884A00BF3275 /* Delegate.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DE189211F8884A00BF3275 /* Delegate.h */; };
B5DE189911F8884A00BF3275 /* Delegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B5DE189311F8884A00BF3275 /* Delegate.m */; };
B5DE189A11F8884A00BF3275 /* Event.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DE189411F8884A00BF3275 /* Event.h */; };
@ -77,6 +84,13 @@
B5DDE85B11FF1326000DB38B /* GraphicsDevice.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GraphicsDevice.m; sourceTree = "<group>"; };
B5DDE89411FF16A3000DB38B /* Protocols.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Protocols.h; sourceTree = "<group>"; };
B5DDE89511FF16A3000DB38B /* Protocols.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Protocols.m; sourceTree = "<group>"; };
B5DDE8C111FF29E8000DB38B /* ReachGraphicsDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ReachGraphicsDevice.h; sourceTree = "<group>"; };
B5DDE8C211FF29E8000DB38B /* ReachGraphicsDevice.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ReachGraphicsDevice.m; sourceTree = "<group>"; };
B5DDE8C511FF2A23000DB38B /* HiDefGraphicsDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HiDefGraphicsDevice.h; sourceTree = "<group>"; };
B5DDE8C611FF2A23000DB38B /* HiDefGraphicsDevice.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HiDefGraphicsDevice.m; sourceTree = "<group>"; };
B5DDE8C911FF2AD6000DB38B /* Enums.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Enums.h; sourceTree = "<group>"; };
B5DDE90711FF352E000DB38B /* Color.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Color.h; sourceTree = "<group>"; };
B5DDE90811FF352E000DB38B /* Color.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Color.m; sourceTree = "<group>"; };
B5DE189211F8884A00BF3275 /* Delegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Delegate.h; sourceTree = "<group>"; };
B5DE189311F8884A00BF3275 /* Delegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Delegate.m; sourceTree = "<group>"; };
B5DE189411F8884A00BF3275 /* Event.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Event.h; sourceTree = "<group>"; };
@ -163,9 +177,14 @@
children = (
B5DDE82E11FF1213000DB38B /* Retronator.Xni.Framework.Graphics.classes.h */,
B5DDE83011FF1222000DB38B /* Retronator.Xni.Framework.Graphics.h */,
B5DDE8C911FF2AD6000DB38B /* Enums.h */,
B5DDE82A11FF10EF000DB38B /* IGraphicsDeviceService.h */,
B5DDE85A11FF1326000DB38B /* GraphicsDevice.h */,
B5DDE85B11FF1326000DB38B /* GraphicsDevice.m */,
B5DDE8C111FF29E8000DB38B /* ReachGraphicsDevice.h */,
B5DDE8C211FF29E8000DB38B /* ReachGraphicsDevice.m */,
B5DDE8C511FF2A23000DB38B /* HiDefGraphicsDevice.h */,
B5DDE8C611FF2A23000DB38B /* HiDefGraphicsDevice.m */,
);
path = Graphics;
sourceTree = "<group>";
@ -197,6 +216,8 @@
B5DE190611F88B5D00BF3275 /* RectangleStruct.h */,
B5DE190211F88AF500BF3275 /* Rectangle.h */,
B5DE190311F88AF500BF3275 /* Rectangle.m */,
B5DDE90711FF352E000DB38B /* Color.h */,
B5DDE90811FF352E000DB38B /* Color.m */,
B5DE18FA11F88AD900BF3275 /* GameHost.h */,
B5DE18FB11F88AD900BF3275 /* GameHost.m */,
B5DDE7E911FF04E3000DB38B /* Game.h */,
@ -274,6 +295,10 @@
B5DDE83111FF1222000DB38B /* Retronator.Xni.Framework.Graphics.h in Headers */,
B5DDE85C11FF1326000DB38B /* GraphicsDevice.h in Headers */,
B5DDE89611FF16A3000DB38B /* Protocols.h in Headers */,
B5DDE8C311FF29E8000DB38B /* ReachGraphicsDevice.h in Headers */,
B5DDE8C711FF2A23000DB38B /* HiDefGraphicsDevice.h in Headers */,
B5DDE8CA11FF2AD6000DB38B /* Enums.h in Headers */,
B5DDE90911FF352E000DB38B /* Color.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -338,6 +363,9 @@
B5DDE82311FF0D4F000DB38B /* GameTime.m in Sources */,
B5DDE85D11FF1326000DB38B /* GraphicsDevice.m in Sources */,
B5DDE89711FF16A3000DB38B /* Protocols.m in Sources */,
B5DDE8C411FF29E8000DB38B /* ReachGraphicsDevice.m in Sources */,
B5DDE8C811FF2A23000DB38B /* HiDefGraphicsDevice.m in Sources */,
B5DDE90A11FF352E000DB38B /* Color.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};