我试图通过opengl es 2.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
答案 0 :(得分:0)
GLKView
的指定初始值设定项为-initWithFrame:context:
。您应该实现它,而不是-initWithFrame:
,并在super
上调用它。