gpt4 book ai didi

iphone - glGenTextures 在后台线程中返回零

转载 作者:行者123 更新时间:2023-12-03 18:38:56 25 4
gpt4 key购买 nike

我需要在 OpenGL ES 的后台线程中加载纹理。但在后台线程中调用时,glGenTextures 始终返回零。

-(void) someMethodInMainThread {
[self performSelectorInBackground:@selector(load) withObject:nil];
}

-(void) load {
GLuint textureID = 0;
glGenTextures(1, &textureID);
}

textureID 为零。如果我将代码更改为 [self PerformSelector:@selector(tmp) withObject:nil];它将正常工作并返回 1。我应该如何在后台线程中加载纹理?

最佳答案

这是一个常见错误,每个 OpenGL 上下文只能在一个线程中处于事件状态(当前),因此当您创建新线程时,它没有任何 OpenGL 上下文,并且所有 GL 调用都会失败。

解决方案:创建另一个 OpenGL 上下文,使其在后台线程中处于当前状态。要加载纹理,您还需要与主上下文共享 OpenGL 名称(纹理 ID 等)。

关于iphone - glGenTextures 在后台线程中返回零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3467935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com