使用 NPAPI 编写插件D3D。它可以在 Firefox 上运行,但浏览器会黑屏。为什么?

发布于 2024-10-19 08:50:09 字数 284 浏览 3 评论 0原文

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

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

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

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

有人可以帮我吗?

I'm writing a plugin, using NPAPI and D3D. I just simply put a D3D sample from DXSDK and NPAPI together. I receive a HWND when the plugin starts up, and I passed it to D3D to draw.

It works though. the control(a 400 * 300 rectangle) on the test page DOES show what I expected.

But all other area in FireFox window is black, including the menu bar. All other contents on the test page cannot be seen.

I tried just InitDevice(D3D) with the HWND and do NO rendering at all. But still got the same problem.

Can anyone help me out here plz?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

世态炎凉 2024-10-26 08:50:09

我以前见过这种情况发生过几次;我遇到过两种不同的情况。第一个是当我的 D3D 初始化出现一些奇怪的情况时,这显然与 Firefox 冲突 - 但我仍然不确定我更改了什么以使其正常工作。

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

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

希望有帮助!

I've seen this happen a few times before; there are two different situations where I encountered it. The first is when I had something weird with my D3D initialization which aparently conflicted with firefox -- but I'm still not sure what I changed to get it working.

The second, which I hope is what you are encountering, is when I was initializing D3D and attempting to draw on the main thread. My theory (unproven) is that Firefox is actually creating its own DX context of some sort and so creating another one on the same thread conflicts. When we moved the init and drawing code to another thread it all started working.

This is one reason that FireBreath has so much code to help make things threadsafe and allow cross-thread calls back to javascript -- every time I've tried to do drawing on the main thread with OGL or DX I've run into problems somewhere.

Hope that helps!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文