문제

빠른 답변: Google을 통해이 페이지에 도달 한 사람들은 동일한 문제에 대한 솔루션을 찾고있는 사람들을 위해이 빠른 수정 (GOZ가 제안)을 시도해보십시오. d3dcreate_fpu_preserve createVice () 호출의 동작 플래그에. 그것은 나를 위해 그것을 정리했습니다!

DirectX 9 기반 NPAPI 플러그인을 만들고 있습니다. Chrome과 Opera에서 잘 작동하는 것 같습니다. 그러나 Firefox에서는 이상한 렌더링 아티팩트가됩니다. DirectX를 초기화하면 (아티팩트가 나타나려면 렌더링을 수행 할 필요가 없음) Firefox UI의 전부 또는 일부가 검은 색으로 변합니다. 창 크기 조정 (예 : 리페인트 시작)은 아티팩트가 제거되고 플러그인은 그 시점에서 제대로 작동하는 것처럼 보이지만 이것은 분명히 바람직한 "기능"이 아닙니다. 온라인에서 다른 여러 사람들 이이 문제를 언급했으며, 대부분 Firefox 3으로 시작했다고 주장합니다. 하나의 게시물 발견되는 해결책을 언급하지만 저자는 방법을 공개하는 데 관심이없는 것 같습니다.

이 문제와 가능한 솔루션에 익숙한 사람이 있습니까? 링크 된 게시물에서 DX가 초기화되는 방식과 관련이있는 것처럼 보이지만 아직 문제를 방지하는 조합을 찾지 못했습니다.

이것은 내가 사용하는 DX 초기화 코드입니다 (명확성을 위해 제거 된 오류 처리) :

RECT rc;
GetClientRect(pluginHwnd, &rc);

D3DPRESENT_PARAMETERS d3d9PresentParams;
ZeroMemory(&d3d9PresentParams, sizeof(D3DPRESENT_PARAMETERS));    

d3d9PresentParams.hDeviceWindow = pluginHwnd;
d3d9PresentParams.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3d9PresentParams.Flags = D3DPRESENTFLAG_DEVICECLIP; // Failed attempt to solve FF issue
d3d9PresentParams.EnableAutoDepthStencil = FALSE; // No depth testing
d3d9PresentParams.PresentationInterval = D3DPRESENT_INTERVAL_ONE; // Use Vsync

d3d9PresentParams.MultiSampleType = D3DMULTISAMPLE_NONE; // Don't care about Multisampling
d3d9PresentParams.MultiSampleQuality = 0;

d3d9PresentParams.BackBufferCount = 1; 
d3d9PresentParams.BackBufferWidth = rc.right - rc.left; 
d3d9PresentParams.BackBufferHeight = rc.bottom - rc.top;  
d3d9PresentParams.BackBufferFormat = D3DFMT_UNKNOWN; // Use the same color format as windows 

d3d9PresentParams.Windowed = TRUE; // Explicitly windowed
d3d9PresentParams.FullScreen_RefreshRateInHz = 0;

d3d9->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, pluginHwnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, &d3d9PresentParams, &d3d9Device );
도움이 되었습니까?

해결책

내 머리 꼭대기에서 생각할 수있는 유일한 것은 장치 생성에서 "d3dcreate_nowindowchanges"동작 플래그를 설정하는 것입니다.

edit1 :backbufferwidth와 높이를 0으로 설정하고 창에서 정보를 상속받을 수 있습니다.

d3dcreate_fpu_preserve 플래그와 d3dcreate_multithreaded를 설정하는 것이 좋습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top