2016-12-24 186 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