glGenBuffers返回0xffffffff作为缓冲区名称

时间:2014-01-25 19:46:45

标签: iphone rendering opengl-es-2.0

我有以下代码(iphone上的OpenglES2.0):

glGenBuffers(1, &tmp->m_vbo);

其中tmp-> m_vbo是unsigned int。

在大多数情况下tmp-> m_vbo是有效的,一切都很完美,但有时返回的值是0xffffffff,我第一次尝试使用那个vbo会在glDrawElements中崩溃。

任何人都知道可能导致这种情况的原因吗?

感谢。

3 个答案:

答案 0 :(得分:1)

我找到了原因:上下文似乎有些东西。我使用了两个线程,一个加载线程和主线程,每个线程都有每个上下文(共享数据)。我有一个“当前上下文”值,我在设置所需的上下文之前检查(以避免冗余的SetContext调用),并以某种方式将我的“当前上下文”值设置为正确的上下文,但EAGLView中的实际上下文不是。 修复是使用EAGLView中的currentContext进行测试而不是我自己的值。

答案 1 :(得分:0)

我有同样的问题!

在斯威夫特:

func updateContext() {
    if glContext != EAGLContext.currentContext() {
        EAGLContext.setCurrentContext(glContext)
    }
}

在代码中出现问题之前使用updateContext()函数解决了我的问题。

答案 2 :(得分:-1)

此返回值为-1。您应该在glGenBuffers之后检查GL错误。