我正在学习OpenGLES,并且试图将GLKViewer放在UIViewController中。

我知道我可以通过使用GLViewController解决主要问题,但是我正在尝试学习如何通过这种方式。

我找到了Nesting GLKView into UIViewControllerNested GLKView and GLKViewController这个问题,但是即使我认为我在做所有正确的步骤,我也一定会丢失一些东西,因为在我运行项目时,我无法进入drawInRect打印行。

在 Storyboard 中,我将ViewController指向glkview组件的委托(delegate)。

我试图使代码尽可能地简单,任何帮助将不胜枚举:

MyController.h

#import <Foundation/Foundation.h>
#import <GLKit/GLKit.h>

@interface MyGLController : UIViewController <GLKViewDelegate>
{
    GLuint vertexBufferID;

}

@property (weak, nonatomic) IBOutlet GLKView *glview;

@property (strong, nonatomic) GLKBaseEffect *baseEffect;

@end

MyGLController.m
#import "MyGLController.h"

@implementation MyGLController

//@synthesize baseEffect;

-(void) viewDidLoad{
    [super viewDidLoad];

    self.glview.context = [[EAGLContext alloc] initWithAPI:
     kEAGLRenderingAPIOpenGLES2];

     [EAGLContext setCurrentContext:self.glview.context];
    printf("View Loaded");
}


- (void)glkView:(GLKView *)view drawInRect:(CGRect)rect
{
    printf("DrawInRect");
}

@end

*更新*

据我所知,glkview已按照建议正确连接,并添加了josh-knapp并称为setNeedsDisplay。

如果有什么我想念的东西,我在这里上传了项目的副本:https://github.com/jcrogel/OpenGLDebug.git

我对此完全是菜鸟,因此对任何愚蠢的疏忽深表歉意:)

最佳答案

您并不是说您已在 Storyboard 中连接了MyGLController的glview属性,因此请进行验证。

接下来,您将在加载glview上下文后对其进行设置。如果没有GLKViewController,则不会告诉glview需要绘制的内容。设置上下文后,请确保在某处调用[self.glview setNeedsDisplay]

关于iphone - glkView drawInRect不被调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13347480/

10-11 14:38