Hallo,
ich bastel gerade zum ersten mal an einem iPhone Spiel. Ich habe es für die "alten" iPhones mit 3,5" Display Retina und Normal geschrieben. Ich dachte jetzt die alten Spiele laufen alle ohne Probleme auch auf dem neuen 4" iPhone, einfach mit automatischen Rand oben und unten. Aber der Simulator des 4" iPhones streckt mir jetzt das Bild und alles passt nicht mehr.
Dann müssten doch alle alten Apps auch Probleme machen?
Oder gibt es irgend wo eine Funktion eventuell einen Plist Parameter den ich setzen kann um das 4" dazu zu bringen ein 3,5" display wie gehabt für mein Spiel zu verwenden?
Und wenns am Code liegt mal zum überblich die MainView Klasse, viel steht da eh nicht drin. Ist wirklich recht simpel alles.
Alles anzeigen
Alles anzeigen
Hat jemand eine Idee?
ich bastel gerade zum ersten mal an einem iPhone Spiel. Ich habe es für die "alten" iPhones mit 3,5" Display Retina und Normal geschrieben. Ich dachte jetzt die alten Spiele laufen alle ohne Probleme auch auf dem neuen 4" iPhone, einfach mit automatischen Rand oben und unten. Aber der Simulator des 4" iPhones streckt mir jetzt das Bild und alles passt nicht mehr.
Dann müssten doch alle alten Apps auch Probleme machen?
Oder gibt es irgend wo eine Funktion eventuell einen Plist Parameter den ich setzen kann um das 4" dazu zu bringen ein 3,5" display wie gehabt für mein Spiel zu verwenden?
Und wenns am Code liegt mal zum überblich die MainView Klasse, viel steht da eh nicht drin. Ist wirklich recht simpel alles.
Quellcode
- #import <UIKit/UIKit.h>
- #import "GameManager.h"
- #import <OpenGLES/EAGL.h>
- #import <OpenGLES/ES1/gl.h>
- #import <OpenGLES/ES1/glext.h>
- #import <QuartzCore/QuartzCore.h>
- @interface MainView : UIView <UIAccelerometerDelegate> {
- GameManager *gameManager;
- UIAccelerometer *accelerometer;
- EAGLContext *eaglContext;
- GLuint renderbuffer;
- GLuint framebuffer;
- GLuint depthbuffer;
- GLint viewportWidth;
- GLint viewportHeight;
- }
- - (void) setupOGL;
- - (void) accelerometer: (UIAccelerometer *) accelerometer
- didAccelerate: (UIAcceleration *) acceleration;
- @end
Quellcode
- #import "MainView.h"
- #import "GameManager.h"
- @implementation MainView
- #pragma mark ============================= Init Methods ===============================
- + (Class) layerClass {
- return [CAEAGLLayer class];
- }
- - (void) setupOGL {
- CAEAGLLayer *eaglLayer = (CAEAGLLayer *) self.layer;
- eaglLayer.opaque = YES;
- eaglContext = [[EAGLContext alloc] initWithAPI: kEAGLRenderingAPIOpenGLES1];
- if (!eaglContext || ![EAGLContext setCurrentContext: eaglContext]) {
- [self release];
- } else {
- //Renderbuffer
- glGenRenderbuffersOES(1, &renderbuffer);
- glBindRenderbufferOES(GL_RENDERBUFFER_OES, renderbuffer);
- //Framebuffer
- glGenFramebuffersOES(1, &framebuffer);
- glBindFramebufferOES(GL_FRAMEBUFFER_OES, framebuffer);
- glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, GL_RENDERBUFFER_OES, renderbuffer);
- //Graphic context
- [eaglContext renderbufferStorage: GL_RENDERBUFFER_OES fromDrawable: eaglLayer];
- glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_WIDTH_OES, &viewportWidth);
- glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_HEIGHT_OES, &viewportHeight);
- //Depthbuffer (3D only)
- glGenRenderbuffersOES(1, &depthbuffer);
- glBindRenderbufferOES(GL_RENDERBUFFER_OES, depthbuffer);
- glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_DEPTH_COMPONENT16_OES, viewportWidth, viewportHeight);
- glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_DEPTH_ATTACHMENT_OES, GL_RENDERBUFFER_OES, depthbuffer);
- glBindRenderbufferOES(GL_RENDERBUFFER_OES, renderbuffer); //rebind
- if (!gameManager) {
- gameManager = [GameManager getInstance];
- }
- }
- }
- #pragma mark ============================= Draw Method ===============================
- - (void) drawRect: (CGRect) rect {
- glViewport(0, 0, viewportWidth, viewportHeight);
- glClearColor(0.0, 0.0, 0.0, 1.0);
- //fuer 2D reicht glClear(GL_COLOR_BUFFER_BIT); da GL_DEPTH_TEST disabled
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- if (!accelerometer) {
- accelerometer = [UIAccelerometer sharedAccelerometer];
- accelerometer.delegate = self;
- accelerometer.updateInterval = 0.033;
- }
- [gameManager drawStatesWithFrame: rect];
- [eaglContext presentRenderbuffer: GL_RENDERBUFFER_OES];
- }
- #pragma mark ============================= Input Handling ===============================
- - (void) touchesBegan: (NSSet *) touches withEvent: (UIEvent *) event {
- [self setMultipleTouchEnabled: YES];
- CGPoint p = [[touches anyObject] locationInView: self];
- [gameManager touchBegan: p];
- NSSet *allTouches = [event allTouches];
- //NSLog(@"Tap count: %i", [allTouches count]);
- if ([allTouches count] == 1)
- {
- //NSLog(@"1 Finger-Rot:");
- // to dies weil 1 finger!
- }
- if ([allTouches count] == 2)
- {
- //NSLog(@"2 Finger-Blau:");
- multyclick2=1;
- // to dies weil 2 finger!
- }
- if ([allTouches count] == 3)
- {
- //NSLog(@"3 Finger-Grün:");
- multyclick3=1;
- // to dies weil 2 finger!
- }
- if ([allTouches count] == 4)
- {
- //NSLog(@"4 Finger-Gelb:");
- multyclick4=1;
- // to dies weil 2 finger!
- }
- if ([allTouches count] == 5)
- {
- //NSLog(@"5 Finger-Orange:");
- multyclick5=1;
- // to dies weil 2 finger!
- }
- }
- - (void) touchesMoved: (NSSet *) touches withEvent: (UIEvent *) event {
- CGPoint p = [[touches anyObject] locationInView: self];
- [gameManager touchMoved: p];
- }
- - (void) touchesEnded: (NSSet *) touches withEvent: (UIEvent *) event {
- [gameManager touchEnded];
- }
- - (void) touchesCancelled: (NSSet *) touches withEvent: (UIEvent *) event {
- [gameManager touchEnded];
- }
- - (void) accelerometer: (UIAccelerometer *) sensor
- didAccelerate: (UIAcceleration *) acceleration {
- float x = acceleration.x; //-1 < 0 = links / 0 < 1 = rechts
- float y = acceleration.y; //-1 < 0 = nach unten / 0 < 1 = nach oben
- float z = acceleration.z; //-1 < 0 = display oben / 0 < 1 = display unten
- //NSLog(@"Sensor: x: %f y: %f z: %f", x, y, z);
- acelrateX=x; // Weil diese doofen warnmeldungen nerfen!
- acelrateY=y;
- acelrateZ=z;
- }
- -(void) dealloc {
- [gameManager release];
- if (eaglContext) {
- glDeleteRenderbuffersOES(1, &depthbuffer);
- glDeleteFramebuffersOES(1, &framebuffer);
- glDeleteRenderbuffersOES(1, &renderbuffer);
- [eaglContext release];
- }
- [super dealloc];
- }
- @end
Hat jemand eine Idee?
Just a bloggingFreak raysspieleschmiede.blogspot.de freakwave-games.blogspot.de