1

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

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

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

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

有人可以帮我吗?

4

1 回答 1

0

我以前见过这种情况发生过几次;我遇到了两种不同的情况。第一个是我的 D3D 初始化有一些奇怪的地方,这显然与 firefox 冲突——但我仍然不确定我做了什么改变才能让它工作。

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

这是FireBreath有这么多代码来帮助使事情变得线程安全并允许跨线程调用回 javascript 的原因之一——每次我尝试使用 OGL 或 DX 在主线程上绘图时,我都会在某个地方遇到问题.

希望有帮助!

于 2011-02-24T17:23:28.607 回答