2011-02-24 2 views
1

NPAPI 및 D3D를 사용하여 플러그인을 쓰고 있습니다. DXSDK와 NPAPI의 D3D 샘플을 함께 넣으면됩니다. 플러그인이 시작될 때 HWND를 수신하고이를 D3D로 전달합니다.NPAPI + D3D를 사용하여 플러그인 작성하기. 그것은 Firefox에서 작동하지만 브라우저가 검게됩니다. 왜?

그래도 작동합니다. 테스트 페이지의 컨트롤 (400 * 300 사각형)은 내가 예상 한 것을 보여줍니다.

그러나 메뉴 모음을 포함하여 FireFox 창의 다른 모든 영역은 검은 색입니다. 테스트 페이지의 다른 모든 컨텐츠는 볼 수 없습니다.

나는 HWND로 단지 InitDevice (D3D)를 시도하고 전혀 렌더링을하지 않았다. 그러나 여전히 같은 문제가 있습니다.

누구나 나를 도와 줄 수 있습니까?

답변

0

이전에 몇 번이나 이런 일이있었습니다. 내가 만난 두 가지 상황이 있습니다. 첫 번째는 apontly firefox와 충돌하는 D3D 초기화로 이상하게 보였을 때입니다.하지만 작동하게하기 위해 내가 무엇을 바꾸 었는지 아직도 확신 할 수 없습니다.

내가 겪고있는 두 번째 문제는 D3D를 초기화하고 주 스레드에서 그릴 때입니다. 필자의 이론 (검증되지 않음)은 파이어 폭스가 실제로는 일종의 DX 컨텍스트를 작성하고 있으므로 동일한 스레드 충돌에서 또 다른 컨텍스트를 만드는 것이다. 우리가 init과 드로잉 코드를 다른 스레드로 옮길 때 모든 것이 작동하기 시작했다.

이것은 FireBreath이 스레드 세이프를 만들고 자바 스크립트에 크로스 스레드 호출을 허용하는 데 도움이되는 많은 코드를 가지고있는 한 가지 이유입니다. OGL 또는 DX로 메인 스레드에서 그리기를 시도 할 때마다 어딘가에 문제가 생겼다.

희망 하시겠습니까?

+1

정말 고맙습니다. FireBreath를 사용해 보겠습니다. – alex

+0

오늘 커밋 메시지를 살펴보고 첫 번째 문제를 해결할 때 로그를 찾았습니다. 스레드 문제 였지만, 여러 스레드에서 호출을하고있었습니다. – taxilian

+0

그래, 여기 내 코드에서 일어난. 고마워 ~ – alex