Rörelseoskärpa (Direct3D 9)
Du kan förbättra den upplevda hastigheten för ett objekt i en 3D-scen genom att sudda ut objektet och lämna ett suddigt spår av objektbilder bakom objektet. Direct3D-program gör detta genom att återge objektet flera gånger per bildruta.
Kom ihåg att Direct3D-program vanligtvis renderar scener till en buffert utanför skärmen. Innehållet i bufferten visas på skärmen när programmet anropar metoden IDirect3DDevice9::P resent. Ditt Direct3D-program kan rendera objektet flera gånger till en scen innan det visar ramen på skärmen.
Programmatiskt gör programmet flera anrop till en DrawPrimitive-metod och skickar upprepade gånger samma 3D-objekt. Före varje anrop uppdateras objektets position något, vilket ger en serie suddiga objektbilder på målrenderingsytan. Om objektet har en eller flera texturer kan programmet förbättra effekten av rörelseoskärpa genom att återge den första bilden av objektet med alla dess texturer nästan transparenta. Varje gång objektet återges minskar transparensen i objektets struktur. När ditt program renderar objektet i sin slutgiltiga position bör det återge objektets texturer utan transparens. Undantaget är om du lägger till rörelseoskärpa till en annan effekt som kräver texturtransparens. I vilket fall som helst bör den första bilden av objektet i ramen vara den mest transparenta. Den slutliga bilden ska vara minst transparent.
När programmet renderar serien med objektbilder på målrenderingsytan och återger resten av scenen bör den anropa IDirect3DDevice9::P återhålla metod för att visa ramen på skärmen.
Om programmet simulerar effekten av att användaren rör sig genom en scen med hög hastighet kan det lägga till rörelseoskärpa i hela scenen. I det här fallet renderar programmet hela scenen flera gånger per bildruta. Varje gång scenen återges måste programmet flytta vyn något. Om scenen är mycket komplex kan användaren se en synlig prestandaförsämring när accelerationen ökar på grund av det ökande antalet scenåtergivningar per bildruta.
Relaterade ämnen