如何使用 SDL2 在 Mac OS X 上使用 Core Animation-Cocoa 在 FireBreath 中



我正在尝试使用Core Animation/Cocoa在运行Safari(6.2)的OS X(10.8.5)上的浏览器插件中使以下组合工作:

FireBreath + SDL2

我研究了FB提供的BasicMediaPlayer示例,并了解我可以通过FB::P luginWindowMac::getDrawingPrimitive()访问CALayer。

我想完成的是使用 SDL/SDL2 来执行渲染。

在Windows上,这相对容易,因为FB插件窗口(FB::P luginWindowWin)提供了一个HWND,可以传递给SDL_CreateWindowFrom API(后跟SDL_CreateRenderer和SDL_CreateTexture来执行渲染)。void* 对应于 Mac 上的 NSWindow*(从我所学到的),我知道我在我的插件中无法访问它(基于我阅读过的其他帖子)。

所以问题是:如何在 OS X 上将 SDL 与现有的 CALayer 一起使用?

我做了相当多的研究,还浏览了 SDL/SDL2 论坛:

很遗憾,在我的问题中概述的环境中无法使用 SDL。

最终得到的解决方案是:我基本上决定镜像firebreath提供的示例,称为BasicMediaPlayer:

  1. 你基本上必须专门化CAOpenGLLayer,将OpenGL绘图放置在drawInCGLContext方法中。
  2. FB::AttachedEvent:你将收到的插件窗口对象可以转换为FB::PluginWindowMac*,这允许您通过getDrawingPrimitive附加专门的CA层。

对于不熟悉OpenGL以及如何渲染帧的人:看看以下关于stackoverflow的问题,这应该可以让你入门。

相关内容

  • 没有找到相关文章

最新更新