繁体   English   中英

没有调用glkView drawInRect

[英]glkView drawInRect not called

我正在学习OpenGLES,我正在尝试将一个GLKViewer放在UIViewController中。

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

我发现了这个问题,将GLKView嵌入到UIViewController嵌套的GLKView和GLKViewController中但我必须遗漏一些东西,即使我认为我正在做所有正确的步骤,因为当我运行我的项目时,我没有进入drawInRect打印行。

在故事板中,我将ViewController指向glkview组件的委托。

我尽量保持代码尽可能简单,任何帮助都会被贬低:

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

我是一个完全的菜鸟,所以我为任何愚蠢的疏忽道歉:)

你没有说你在故事板中连接了MyGLController的glview属性,所以验证一下。

接下来,您在加载后设置glview上下文。 没有GLKViewController,没有什么可以告诉它需要绘制的glview。 确保在设置上下文后在某处调用[self.glview setNeedsDisplay]

我遇到了类似的问题。

默认情况下,xcode在GLKView属性列表中将enable setNeedsDisplay复选框设置为NO
一旦我改变它,它就有效了。

我看到这个问题已经回答了。 但我有同样的问题,有一个不同的解决方案。 我想我会在这里发布关于其他人可能从中受益的关闭机会的信息。

问题描述

使用GLKView和GLKViewController时,渲染循环函数(drawInRect)被调用一次,但不会再次调用。

可能的原因

CViewController的一些方法已被错误地实现,而没有调用它们的超级。 以下代码说明了三个这样的函数。 下面的例子正确地实现了三个函数,调用它们的超级。

-(void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:NO];
}

-(void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:NO];
}
-(void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:NO];
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM