2011-02-24 40 views
1

我正在写一个插件,使用NPAPI和D3D。我只是简单地将来自DXSDK和NPAPI的D3D样本放在一起。当插件启动时,我会收到一个HWND,并将其传递给D3D进行绘制。使用NPAPI + D3D编写插件。它在Firefox上运行,但浏览器停止运行。为什么?

它虽然工作。测试页上的控件(一个400 * 300的矩形)显示了我的预期。

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

我只是用HWND尝试InitDevice(D3D),根本没有渲染。但仍然有同样的问题。

任何人都可以帮我在这里吗?

回答

0

我以前见过这种情况,我遇到过两种不同的情况。首先是当我的D3D初始化有点奇怪时,它与firefox完全冲突 - 但我仍然不确定我为了使它工作而改变了什么。

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

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

希望有帮助!

+1

非常感谢你,我会试试看看FireBreath。 – alex 2011-02-25 13:31:11

+0

今天正在通过提交消息,发现我们修复第一个问题时的日志 - 这也是一个线程问题,尽管我们在多线程上进行调用。 – taxilian 2011-02-26 06:55:38

+0

是的,我的代码中也发生了同样的情况。谢谢〜 – alex 2011-03-01 02:14:50

相关问题