我有以下代码(iphone上的OpenglES2.0):
glGenBuffers(1, &tmp->m_vbo);
其中tmp-> m_vbo是unsigned int。
在大多数情况下tmp-> m_vbo是有效的,一切都很完美,但有时返回的值是0xffffffff,我第一次尝试使用那个vbo会在glDrawElements中崩溃。
任何人都知道可能导致这种情况的原因吗?
感谢。
答案 0 :(得分:1)
我找到了原因:上下文似乎有些东西。我使用了两个线程,一个加载线程和主线程,每个线程都有每个上下文(共享数据)。我有一个“当前上下文”值,我在设置所需的上下文之前检查(以避免冗余的SetContext调用),并以某种方式将我的“当前上下文”值设置为正确的上下文,但EAGLView中的实际上下文不是。 修复是使用EAGLView中的currentContext进行测试而不是我自己的值。
答案 1 :(得分:0)
我有同样的问题!
在斯威夫特:
func updateContext() {
if glContext != EAGLContext.currentContext() {
EAGLContext.setCurrentContext(glContext)
}
}
在代码中出现问题之前使用updateContext()
函数解决了我的问题。
答案 2 :(得分:-1)
此返回值为-1。您应该在glGenBuffers
之后检查GL错误。