2016-12-24 5 views
1

必要に応じて再描画されたOpenGLビューを作成したいと思います。 GLKitビューをツールページからドラッグしてストーリーボードに配置しました。それから私はviewOpenGlという名前のクラス変数にそれを加えました。ヘッダファイルである:viewDidLoad()Xcode iOS:GLKitビューをどのようにストーリーボードから取得するのですか?

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

私はこのGLKitビューを設定SetupOpenGl()機能を呼び出し、および青の色でそれを再描画すべき:

-(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]; 
} 

最後の3行は、私のGlKitビューの長方形の後青で塗りつぶさなければならないが、まだ黒い。

私の質問です:これらのOpenGlステートメントはなぜ機能しませんか? GLKitViewをOpenGLで描画するために、さらに構成するものは?

+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 

、あなたのCustomBGGLKViewクラスであるGLKViewインスタンスを設定します。

より以下にご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

それは動作します!ありがとう、ダーティーダニー。 – Mike

+0

聞いてうれしい! Upvoteと答えを受け入れる;) – dirtydanee

関連する問題