我目前正在osx上开发一个c ++应用程序框架(我现在正在使用osx版本,将成为跨平台)并且我遇到了以下问题:基本上我的应用程序类完全是事件驱动的。我还编写了自己的Timer / Callback(不使用NSTimer,因此只与我自己的事件循环有关,而不是NSApplications)c ++中的类只是将事件添加到我的Applications事件队列中,以便从mainthread触发它们。现在,我基本上让其中一个计时器尽可能快地调用我的Windows绘图函数,它基本上就像这样(伪代码):
void myCocoaWindow::draw()
{
enableNSOpenGLContext();
//perform drawing
//Swap buffers
[[m_glView openGLContext] flushBuffer];
}
只要关闭垂直同步,一切都很好。但是一旦打开它,flushBuffer
功能就会阻塞,直到下一个垂直回扫,从而阻止我的整个事件循环。
由此得出以下问题:
为了澄清问题二,我知道我可以自己锁定与NSOpenGLContext相关的所有函数,我的问题是,如果没有其他任何东西可以访问我没有任何控制权的上下文,那就更安全了!