【发布时间】:2012-10-10 15:13:34
【问题描述】:
通常,我只会使用 NSOpenGLContext,但在这种情况下,我必须拥有一个 CGContextRef 作为 OpenGL 上下文,以支持我正在使用的其他一些框架。我的问题是:这可以做到吗?
我不能使用 glReadPixels() 来填充上下文,因为这样做会方式变慢。我必须在整个屏幕 (1440 x 900) 上每秒至少渲染 32 次,所以性能对我来说是一个非常重要的问题。有没有办法让 OpenGL 有效地绘制到 CGContextRef 中,还是我需要某种解决方法?
【问题讨论】:
-
“我必须有一个 CGContextRef”——为什么?
-
出于多种原因。最大的原因是与我正在使用的另一个框架的兼容性。
-
"我现在可以做到了。" 假设你的意思是“我知道”,你怎么会这么想? Apple 似乎不太可能允许您通过随机 OpenGL 调用来颠覆 Quartz2D。
-
是的,我的意思是知道。我不知道这是一个错字还是只是我有另一个大脑放屁。我知道这是可能的,因为我看到了其他问题,其中很多都在这个网站上,提到使用
CGContextRef作为 OpenGL 上下文。此外,这就是CGContextRef的用途:Apple 的绘图命令,归结为 OpenGL 绘图命令。 -
@Justin:你能举一个这样的问题的例子吗?我搜索了一下,没有找到;我看到的所有这些都使用了位图 CGContextRef。此外,即使 Apple 的绘图命令直接使用 OpenGL(而不是更可能使用 Apple 的 OpenGL 命令使用的),Apple 也可能不会让您直接弄乱他们的 OpenGL 上下文。如果他们这样做了,您可以更改 GL 状态,以使 Quartz2D 不再适用于该窗口。至少,不是没有他们验证他们期望设置的状态是否已设置。此外,您还可以获得他们的物品并与他们玩耍。
标签: objective-c c cocoa opengl cgcontextref