我正在学习OpenGLES,并且试图将GLKViewer放在UIViewController中。
我知道我可以通过使用GLViewController解决主要问题,但是我正在尝试学习如何通过这种方式。
我找到了Nesting GLKView into UIViewController和Nested 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/