我正在开发一款在 OpenGL ES 中使用大型纹理的 iPad 应用程序。当场景第一次加载时,我在天花板上看到一个大的黑色伪影持续了几帧,如下图所示。就好像更高级别的 mipmap 尚未填充。在后续帧中,天花板正确显示。
当我开始使用 mipmapping 时,这个问题才开始出现。一种可能的解释是 glGenerateMipmap() 调用异步执行其工作,生成一些 mipmap 创建工作程序(在单独的进程中,或者可能在 GPU 中)并返回。
这可能吗,还是我找错树了?
最佳答案
在单一上下文中,所有操作似乎都严格按顺序执行。但是,在您最近的回复中,您提到了使用第二个线程。为此,您必须创建第二个共享上下文:重新进入 OpenGL 上下文始终是非法的。如果已经在使用共享上下文,您仍然必须遵循一些同步规则,这些规则记录在 http://developer.apple.com/library/ios/ipad/#DOCUMENTATION/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/WorkingwithOpenGLESContexts/WorkingwithOpenGLESContexts.html 中。
关于ios - iOS glGenerateMipmap 是同步的,还是可能是异步的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9727206/