2011-02-24 13 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

相關問題