1

opengles2.0テンプレートを使用して画面に画像を描画しようとしています。MyGLKViewの(void)drawRect:(CGRect)rectに次のエラーが表示されます。これを解決するためのアイデアはありますか?ありがとうございました!!

CGContextSaveGState:無効なコンテキスト0x0
CGContextSetBlendMode:無効なコンテキスト0x0
CGContextSetAlpha:無効なコンテキスト0x0
CGContextTranslateCTM:無効なコンテキスト0x0
CGContextScaleCTM:無効なコンテキスト0x0
CGContextDrawImage:無効なコンテキスト0x0
CGContextRestoreGState:無効なコンテキスト0x0

MyGLKView.m

#import "MyGLKView.h"
@implementation MyGLKView

@synthesize pUIImage;

//- (id)initWithFrame:(CGRect)frame
- (id)initWithFrame:(CGRect)frame context:(EAGLContext *)context
{
    //if (self = [super initWithFrame:frame])
    if (self = [super initWithFrame:frame context:context])
    {
        // Initialization code
        pUIImage = [UIImage imageNamed:@"star-green.png"];
    }
    return self;
}


// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
    // Drawing code
    [pUIImage drawAtPoint:CGPointMake(0, 0)];
}

@end

ViewController.m

#import "ViewController.h"
#import "MyGLKView.h"

@implementation ViewController

@synthesize pContext;

- (void)viewDidLoad
{
    [super viewDidLoad];
    pContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];

    if (!pContext)
    {
        NSLog(@"Failed to create ES context");
    }

    //MyGLKView *pMyGLKView = [[MyGLKView alloc] init];
    //pMyGLKView.context = pContext;
    //self.view = pMyGLKView;
    self.view = [[MyGLKView alloc] initWithFrame:[[UIScreen mainScreen] bounds] context:pContext];
}

- (void)viewDidUnload
{    
    [super viewDidUnload];

}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Release any cached data, images, etc. that aren't in use.
}

- (void)update
{

}

@end
4

1 に答える 1

0

の指定された初期化子はGLKViewです-initWithFrame:context:。ではなく、それを実装し、で-initWithFrame:同じものを呼び出す必要がありsuperます。

于 2012-06-03T06:12:43.977 に答える