【问题标题】:GLKBaseEffect prepareToDraw GL ERROR: 0x0501GLKBaseEffect prepareToDraw GL 错误:0x0501
【发布时间】:2012-05-26 15:35:23
【问题描述】:

所以我一直在用一些 OpenglES 进行一些 iphone 开发,但是当我调用 prepareToDraw 时,我遇到了一个相当奇怪的错误。简而言之,我的程序模拟掷骰子(尝试学习objective-c和opengl)。该程序在大多数情况下运行良好,我可以使用我为我的应用程序编写的所有内容(其物理错误但稍后会修复)。在我使用了包含 OpenGL 的部分之后,问题就出现了。

该程序包含 2 个菜单,您必须通过才能到达使用 OpenGL 的屏幕,一旦您使用了应用程序 OpenGL 部分并返回上一个菜单,然后再次尝试返回 OpenGL 部分,我得到一个打印输出说 GL 错误:0x0501。根据我的效果,我将其缩小为由 prepareToDraw 方法引起的。关于它的另一个奇怪的部分是,如果我回去,然后再向前,OpenGL 会再次工作,并且可以一次又一次地重复,以便它在你进入 OpenGL 部分时每秒钟都工作和中断。

我一直在寻找与我类似的问题,但每次它都与加载不是二次幂纹理的纹理有关,这对我没有帮助,因为我什至还没有使用纹理,只是彩色顶点。

我将我的两个代码文件粘贴到了问题所在的位置

骰子.m:http://pastebin.com/ze1DEEzs 在 draw 方法中,您会看到我的打印输出缩小了问题所在,即 prepareToDraw 方法。 (第 308 行)

RollViewController.m: http://pastebin.com/VycwAh3R 这个文件是我设置效果和上下文等的地方,所以我一定是在这里做错了,导致prepareToDraw方法在我每2次运行程序的OpenGL部分时都搞砸了。我有一种感觉,这与不放弃与上下文和效果有关的某种资源有关,但我找不到有关删除上下文和效果的任何信息(可能是因为您不需要,但我不确定)。

我希望有人遇到同样的问题并且可以回答我的问题,我希望这不仅仅是一个愚蠢的错误,因为我已经尝试解决这个问题一段时间了 :)

谢谢

【问题讨论】:

    标签: objective-c ios opengl-es glkit


    【解决方案1】:

    在经历了许多痛苦和折磨后,我终于找到了解决问题的方法。我不完全确定为什么这是一个问题,但是在 OpenGL 部分(又名 RollViewController.m)中创建上下文并不是解决问题的方法。相反,您应该在程序的整个生命周期中创建一次,并将您的当前上下文设置为您的 glkview 为您创建的上下文。也许有人可以启发我为什么重新创建上下文是一个坏主意。

    在我的代码中,我有一个配置文件对象,它在视图和菜单之间传递,以便它们都可以与相同的数据进行通信,所以我只是在我的配置文件对象中定义了一个公共上下文,以便一切都可以访问上下文而不是创建自己的(并打破)。

    【讨论】:

    • 我也遇到了同样的问题,介意分享一下你的方法吗?谢谢!
    • 您需要做的就是确保在应用程序的整个生命周期内初始化一次 EAGLContext。如果您只有一个具有 OpenGL 视图的视图,您可以制作一个静态 EAGLContext 并分配一次。否则使用单例模式。或者你可以去[EAGLContext setCurrentContext:[[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]]一次,然后使用[EAGLContext setCurrentContext:[EAGLContext currentContext]]
    • 谢谢您,先生!使用单例模式以避免检查上下文是否已经创建。
    【解决方案2】:

    错误似乎很普遍,可能是由于不同的问题。我通过不使用 mipmap 避免了它(现在)。我评论了以下代码,并且不再出现错误。

    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST); glGenerateMipmap(GL_TEXTURE_2D)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多