我如何使用 SDL2 在 Mac OS X 上使用 Core Animation-Cocoa 在 FireBreath 中进行渲染
How can I use SDL2 for rendering in FireBreath on Mac OS X using Core Animation-Cocoa
我正在尝试使用 Core Animation/Cocoa 在 OS X (10.8.5) 运行 Safari (6.2) 上的浏览器插件中使用以下组合:
FireBreath + SDL2
我研究了 FB 提供的 BasicMediaPlayer 示例,了解到我可以通过 FB::PluginWindowMac::getDrawingPrimitive() 访问 CALayer。
我想完成的是使用SDL/SDL2来执行渲染。
在Windows上比较容易,因为FB插件window(FB::PluginWindowWin)提供了一个HWND,可以传递给SDL_CreateWindowFrom API (后跟 SDL_CreateRenderer 和 SDL_CreateTexture 来执行渲染)。 void* 将对应于 Mac 上的 NSWindow*(据我了解),我知道我无法在我的插件中访问它(根据我阅读的其他帖子)。
所以问题是:如何在 OS X 上将 SDL 与现有 CALayer 一起使用?
我做了很多研究,还浏览了 SDL/SDL2 论坛:
很遗憾,我似乎无法在我的问题中概述的环境中使用 SDL。
我最终得到的解决方案:我基本上决定镜像 firebreath 提供的名为 BasicMediaPlayer 的示例:
- 您基本上必须专门化
CAOpenGLLayer
,将 OpenGL 绘图放在 drawInCGLContext
方法中。
- 收听
FB::AttachedEvent
:您将收到的插件 window 对象可以转换为 FB::PluginWindowMac*
,它允许您通过 [=14= 附加您的专用 CA 层].
对于不熟悉 OpenGL 以及如何渲染帧的任何人:请查看 Whosebug 上的以下 question,这应该可以帮助您入门。
我正在尝试使用 Core Animation/Cocoa 在 OS X (10.8.5) 运行 Safari (6.2) 上的浏览器插件中使用以下组合:
FireBreath + SDL2
我研究了 FB 提供的 BasicMediaPlayer 示例,了解到我可以通过 FB::PluginWindowMac::getDrawingPrimitive() 访问 CALayer。
我想完成的是使用SDL/SDL2来执行渲染。
在Windows上比较容易,因为FB插件window(FB::PluginWindowWin)提供了一个HWND,可以传递给SDL_CreateWindowFrom API (后跟 SDL_CreateRenderer 和 SDL_CreateTexture 来执行渲染)。 void* 将对应于 Mac 上的 NSWindow*(据我了解),我知道我无法在我的插件中访问它(根据我阅读的其他帖子)。
所以问题是:如何在 OS X 上将 SDL 与现有 CALayer 一起使用?
我做了很多研究,还浏览了 SDL/SDL2 论坛:
很遗憾,我似乎无法在我的问题中概述的环境中使用 SDL。
我最终得到的解决方案:我基本上决定镜像 firebreath 提供的名为 BasicMediaPlayer 的示例:
- 您基本上必须专门化
CAOpenGLLayer
,将 OpenGL 绘图放在drawInCGLContext
方法中。 - 收听
FB::AttachedEvent
:您将收到的插件 window 对象可以转换为FB::PluginWindowMac*
,它允许您通过 [=14= 附加您的专用 CA 层].
对于不熟悉 OpenGL 以及如何渲染帧的任何人:请查看 Whosebug 上的以下 question,这应该可以帮助您入门。