Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W wersji Direct3D 9 funkcja Direct3D umożliwi sterownikowi zwrócenie kodów błędów, takich jak E_OUTOFMEMORY, D3DERR_OUTOFVIDEOMEMORY i D3DERR_UNSUPPORTEDCOLORARG, dzięki czemu aplikacja będzie mogła odpowiedzieć na nie. Jednak czasami wywołania interfejsu API, które wygenerowały te typy zwracane, są ładowane do buforu poleceń i są wsadowe wysyłane do procesora GPU (zobacz Kontrolowanie środowiska uruchomieniowego i optymalizacji sterowników). W takim przypadku błędy nie mogą być przekazywane do aplikacji, gdy należy wykonać akcję, więc kod błędu jest używany przez środowisko uruchomieniowe, a na obiekcie urządzenia jest wykonywana notatka. Później, gdy aplikacja wywołuje IDirect3DDevice9::P resent, IDirect3DDevice9::P resent zwróci D3DERR_DRIVERINTERNALERROR. Dlatego najlepszym rozwiązaniem dla aplikacji podczas odbierania D3DERR_DRIVERINTERNALERROR z usługi IDirect3DDevice9::P resentna jest zniszczenie i ponowne utworzenie urządzenia.
Jeśli chcesz spróbować debugować dalej, poniżej przedstawiono kilka sugestii dotyczących próby uzyskania informacji o tym, które wywołanie interfejsu API generuje błąd:
Ponieważ lista możliwych wartości zwracanych nie jest kompletna, możesz spróbować znaleźć, które wywołanie kończy się niepowodzeniem, otaczając każde wywołanie interfejsu API w następujący sposób:
TRACE ( "Calling DrawPrimitive" ); d3ddev->DrawPrim(...); TRACE ( "done\n" );Strumień debugowania danych wyjściowych powinien następnie wyświetlić wywołanie powodujące problem.
Ponadto w celach debugowania spróbuj wywołać IDirect3DDevice9::ValidateDevice bezpośrednio przed każdym IDirect3DDevice9::D rawPrimitive, aby sprawdzić, czy istnieje dodatkowy problem ze sterownikiem urządzenia (nieobsługiwana operacja, nieprzydatna kombinacja formatów tekstur itp.).
Nuta
IDirect3DDevice9::ValidateDevice należy używać ostrożnie i oszczędnie ze względu na ilość pracy weryfikacji, którą sterownik musi wykonać, aby zwrócić odpowiedź.
Tematy pokrewne