Написание плагина с использованием NPAPI + D3D.Он работает на Firefox, но браузер отключается.Зачем? - PullRequest
1 голос
/ 24 февраля 2011

Я пишу плагин, используя NPAPI и D3D. Я просто положил образец D3D из DXSDK и NPAPI вместе. Когда я запускаю плагин, я получаю HWND и передаю его в D3D для рисования.

Это работает, хотя. элемент управления (прямоугольник 400 * 300) на тестовой странице показывает, что я ожидал.

Но все остальные области в окне FireFox черные, включая строку меню. Все остальное содержимое на тестовой странице не видно.

Я попробовал только InitDevice (D3D) с HWND и вообще не делал рендеринга. Но все еще есть та же проблема.

Может кто-нибудь помочь мне здесь, плз?

1 Ответ

0 голосов
/ 24 февраля 2011

Я видел, как это случалось несколько раз раньше; Есть две разные ситуации, когда я столкнулся с этим. Во-первых, когда у меня была странная вещь с моей инициализацией D3D, которая явно конфликтовала с Firefox - но я все еще не уверен, что я изменил, чтобы заставить это работать.

Второе, с чем, я надеюсь, вы столкнулись, это когда я инициализировал D3D и пытался рисовать в основном потоке. Моя теория (бездоказательная) заключается в том, что Firefox фактически создает свой собственный DX-контекст и создает другой в том же потоке. Когда мы переместили код инициализации и рисования в другой поток, все это начало работать.

Это одна из причин, по которой FireBreath имеет так много кода, который помогает сделать потоки безопасными и разрешить межпоточные вызовы обратно в javascript - каждый раз, когда я пытался рисовать в главном потоке с помощью OGL или DX я где-то столкнулся с проблемами.

Надеюсь, это поможет!

...