2016-12-24 187 views
1

我想创建按需重绘的OpenGL视图。我从工具页面拖动GLKit视图并将其放置在故事板上。然后我将它加入到名为viewOpenGl的类变量中。在头文件是:Xcode iOS:如何配置从故事板获取的GLKit视图?

@property (retain, nonatomic) IBOutlet GLKView *viewOpenGl; 

viewDidLoad()我调用SetupOpenGl()功能,配置该GLKit查看,并应与蓝色重绘它:

-(void)SetupOpenGl 
{ 
self.viewOpenGl.context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]; 
[EAGLContext setCurrentContext:self.viewOpenGl.context]; 
self.viewOpenGl.enableSetNeedsDisplay = true; 

glClearColor(0,0,1,1); 
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
[self.viewOpenGl setNeedsDisplay]; 
} 

我GlKit查看最后三行矩形后应该充满蓝色,但它仍然是黑色的。

我的问题是:为什么这些OpenGl声明不起作用?为了在OpenGL中绘制GLKitView,需要配置什么?

+0

如果这是关于iOS的,那么你最有可能使用OpenGL-ES。如果是这种情况,请适当重新提出问题。 – BDL

回答

0

为了实现着色,您需要继承GLKView,并覆盖drawRect方法。

例子:

.H

#import <GLKit/GLKit.h> 

@interface CustomBGGLKView : GLKView 

@end 

.M

#import "CustomBGGLKView.h" 

@implementation CustomBGGLKView 

- (void)drawRect:(CGRect)rect { 
    [super drawRect:rect]; 
    glClearColor(0.0f, 0.0f, 1.0f, 1.0f); 
    glClear(GL_COLOR_BUFFER_BIT); 
} 

@end 

在你的故事板,设置GLKView实例为您CustomBGGLKView类。

不是修改你的SetupOpenGl()功能如下:

-(void)setupOpenGl { 
    self.viewOpenGl.context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3]; 
    self.viewOpenGl.drawableColorFormat = GLKViewDrawableColorFormatRGBA8888; 
    [EAGLContext setCurrentContext:self.viewOpenGl.context]; 
    self.viewOpenGl.enableSetNeedsDisplay = true; 
    [self.viewOpenGl setNeedsDisplay]; 
} 
+0

它的工作原理!谢谢dirtydanee。 – Mike

+0

很高兴听到! upvote并接受答案比);) – dirtydanee