使用NPAPI + D3D编写插件。它适用于Firefox,但浏览器消失了。为什么?

时间:2011-02-24 08:08:57

标签: direct3d npapi browser-plugin

我正在编写一个插件,使用NPAPI和D3D。我只是简单地将DXSDK和NPAPI的D3D样本放在一起。我在插件启动时收到HWND,然后将其传递给D3D进行绘制。

虽然有效。测试页面上的控件(400 * 300矩形)显示了我的预期。

但FireFox窗口中的所有其他区域都是黑色的,包括菜单栏。无法看到测试页面上的所有其他内容。

我尝试使用HWND的InitDevice(D3D)并且根本不进行渲染。但仍然遇到同样的问题。

任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我以前见过这种情况几次;我遇到过两种不同的情况。第一个是我在D3D初始化时出现了一些奇怪的东西,这与Firefox有很大的冲突 - 但是我仍然不确定我改变了什么来让它工作。

第二个,我希望你遇到的是,当我初始化D3D并尝试在主线程上绘图时。我的理论(未经证实)是Firefox实际上创建了自己的某种DX上下文,因此在同一个线程上创建另一个上下文冲突。当我们将init和绘图代码移动到另一个线程时,它们都开始工作了。

这是FireBreath有如此多的代码来帮助使线程安全并允许跨线程调用回到javascript的一个原因 - 每次我尝试使用OGL或DX在主线程上绘图我在某个地方遇到了问题。

希望有所帮助!