cocoa是否限制了C/ c++ openGL应用程序的整体性能?

Does cocoa limit the overall performance of a C/C++ openGL app?

本文关键字:应用程序 性能 openGL c++ 是否 cocoa      更新时间:2023-10-16

我希望在Macintosh上编写第一个OpenGL应用程序。以前我只在Windows上做过OpenGL编程。据我所知,基本上有三种选择:

过剩可可碳

过剩是不可能的,因为我不喜欢它的样子,从我所读到的,碳的很大一部分是不赞成的。现在,关于Cocoa:

一个帖子在这里:Cocoa OpenGL窗口在纯C?提到Cocoa将您限制为单个线程。它是用于整个应用程序的单个线程,还是用于窗口管理的单个线程?我会被禁止做多线程编程从C/c++本身吗?

还有,可可会让你慢下来吗?暴雪使用什么样的窗口管理?

大多数"纯C"框架(包括SDL)仍然使用Objective-C和Cocoa来创建和管理OpenGL窗口。在整个应用程序中,你不应该过分强调少量的Objective-C。你可以在Objective-C中做最少的工作,然后在c中构建应用程序的其余部分。使用Cocoa是你的最佳选择,因为随着时间的推移,它的支持正在不断改进。如果您使用Carbon,支持将随着时间的推移而恶化,直到突然将其完全移除。

关于供过于求你是对的。避开。有很多优秀的框架。GLUT对OpenGL教育有好处,就是这样。

您将不会被限制使用多个线程。你在其他讨论中看到的线程讨论是指所有OpenGL调用必须从"主线程"发生。换句话说,一旦你创建了一个新线程,你就不能从那个新线程进行OpenGL调用,因为上下文一次只能在一个线程中活动。(在另一个线程中有使上下文活动的调用,但重点是您仍然只能在一个线程中工作。)但是,程序的其余部分可以有多个线程,这没有问题。

简而言之,不,你的表现不会被任意限制。

这不是Cocoa的限制。我所知道的所有OpenGL实现都只允许你在主线程上与OpenGL上下文进行交互。

暴雪当然只是打开一个窗口作为全屏OpenGL上下文,并在其中绘制。

可可不会让你慢下来。