浏览器插件中的Directx控件

| 我必须将DirectX控件插入到用于浏览器的firebreath插件中。 任何人都可以张贴样品该怎么做?我对插件一无所知... 10倍     
已邀请:
我没有可以给您的例子,但是我可以大致告诉您您需要做什么。 首先,请阅读以下内容:http://colonelpanic.net/2010/11/firebreath-tips-drawing-on-windows/ 这将使您大致了解绘图在FireBreath中的工作方式。 首先,您在处理AttachedEvent时设置了所有内容。 创建一个新的线程来处理图形(您的DirectX图形不能在主线程上) 从PluginWindowWin对象获取HWND(将FB :: PluginWindow *广播到FB :: PluginWindowWin并调用getHWND()) 使用提供的HWND在辅助线程上初始化DirectX。设置某种形式的渲染循环,并确保可以从主线程发送命令。 通过以某种方式将消息发布到渲染线程来处理RefreshEvent(来自WM_PAINT),以便在触发该事件时重新绘制消息。 确保在DetachedEvent上关闭线程。 您需要在同一线程上完成DirectX东西的所有初始化,绘制和关闭。这需要全部在不只是主线程的线程上发生(不要仅使用计时器),因为否则,它将使某些版本的Firefox浏览器呈现上下文混乱(不知道为什么)。 无论如何,希望这会有所帮助。 编辑:要将参数传递给boost :: thread的开始,如果这是您决定使用的线程抽象,只需将其作为参数传递即可。
boost::thread t(&MyClass::someFunction, this, theHWND);
那将启动线程。实际上,您可能希望使线程成为类变量或某种东西,以便以后可以访问它-请记住,您希望线程在处理DetachedEvent时已停止。对于消息,我可能会使用FB :: SafeQueue,这是FireBreath的一部分,是线程安全队列。查看有关如何使用它的资源。它非常简单(我认为是从代码项目文章中窃取的)。
// Inside MyClass
void someFunction(HWND theHWND) {
    ...
}
    

要回复问题请先登录注册