Xamarin.ios OpenTK-1.0中的游戏视图调用Destroy/CreateFramebuffer会删除上下文…为什么?

Xamarin.ios OpenTK-1.0中的游戏视图调用Destroy/CreateFramebuffer会删除上下文…为什么?,xamarin.ios,xamarin.android,xamarin,opentk,Xamarin.ios,Xamarin.android,Xamarin,Opentk,OpenTK-1.0中的游戏视图在CreateFramebuffer()中初始化上下文,并在DestroyFramebuffer()中销毁所述上下文。如果我想保留我的VBO,只是创建一堆新的FBO呢?例如,在轮换时,我需要创建新大小的FBO,但我不想完全重新加载所有VBO,如果不完全重新实现全部/大部分GameView,我不明白这将如何工作。我不能只重写这两个方法,因为基类不公开Renderbuffer或Framebuffer上的setter。我错过了什么 总之:我希望旋转设备并获得一个新的Op

OpenTK-1.0中的游戏视图在CreateFramebuffer()中初始化上下文,并在DestroyFramebuffer()中销毁所述上下文。如果我想保留我的VBO,只是创建一堆新的FBO呢?例如,在轮换时,我需要创建新大小的FBO,但我不想完全重新加载所有VBO,如果不完全重新实现全部/大部分GameView,我不明白这将如何工作。我不能只重写这两个方法,因为基类不公开Renderbuffer或Framebuffer上的setter。我错过了什么

总之:我希望旋转设备并获得一个新的OpenTK-1.0 FBO,但不破坏上下文。我该怎么做?

CreateFramebuffer()
创建一个OpenGL上下文,而不是一个。要创建FBO,请调用。要摧毁它,请使用


有关更多信息,请参阅。这是为桌面OpenGL编写的,但本文也适用于OpenGL ES。

谢谢您的回答。你的建议非常明确,这也是我的方向(即:自己管理)。但是,如果我没有弄错的话,您的回答也放弃了OpenTK 1.0的GameView(正如我被迫做的那样),因为它管理Renderbuffer和帧缓冲区,并且不在任何句柄上公开setter。不,这不是完全正确的。创建Android OpenGL上下文,而不是OpenGL渲染缓冲区或FBO。换句话说,使用GameView创建OpenGL“窗口”;然后使用常规的GL.*API创建OpenGL资源(纹理、FBO、VBO等)。这些是正交概念。(另外,为了确保我们的观点一致,我正在谈论Xamarin的OpenTK-1.0,据我所知,它可能与OpenTK本身不同,也可能不同)。在iPhoneOSGameView上,我只看到int Renderbuffer属性的getter。我不熟悉iPhoneOSGameView,因为它似乎在的monotouch分支中不可用。我目前正专注于将mono/opentk中的Android代码合并到。快速查看苹果的文档可以发现,它们提供了直接显示OpenGL渲染缓冲区的功能(无需像在常规OpenGL/ES中那样首先解析纹理),而无需iPhoneOSGameView源代码,我无法判断Xamarin的OpenTK是否支持此功能。