|
می دانم که یکی از مزیت های اصلی WPF استفاده از کارت گرافیک برای render کردن گرافیک و انیمیشن هاست. ولی در جایی خواندم که اگر سیستم کارت گرافیک خوبی نداشته باشد، WPF بعضی از گرافیک ها را با cpu اجرا می کند. چطور بدانم که انیمیشن و گرافیک روی سیستم با کارت گرافیک اجرا شده یا با CPU؟ البته راجع به RenderCapability مطالبی می دانم ولی توضیحات بیشتری در این مورد می خواهم. از دوستان ممنون می شوم اگر کسی بداند که چه کارهای گرافیکی بصورت نرم افزاری ممکن است اجرا شود تا در برنامه ها معمولاً کمتر استفاده کنم.
|
|
سلام از این نظر که اگر سیستم کارت گرافیک خوبی نداشته باشد، WPF بعضی از گرافیک ها را با cpu اجرا می کند من چیزی نشندیم و نمیتونم تایید کنم اما بر اساس تجربه ای که در نوشتن برنامه های متعدد با WPF بدست آوردم دادن افکت هایی مثل سایه و بلور همچنین انیمیشن هایی که ایجاد می کنید شدیدا به کارت گرافیکی شما وابسته هستند ، اجرای برنامه هایی با گرافیک سنگین و افکت های متنوع بر روی کارت گرافیک هایی که WHQL نباشند و همچنین درایور مناسب برای آنها نصب نداشه باشد با کندی اجرا میشود
برای افکت ها میتونم بگم که افکت هایی که در فضای نام BitmapEffect هستند، بصورت نرم افزاری اجرا میشوند. اما تنها افکتهایی که بصورت سخت افزاری اجرا میشن در فضای نام Effect هستند. (افکتهای موجود در BBitmapEffect قدیمی تر از Effect هستند)
بقیه قابلیت ها در WPF مثل Gradient بستگی به این داره که کارت گرافیک شما چه نسخه ای از DirectX رو پشتیبانی میکنه. مثلا Gradientنوع دایره ای (RadialGradient) در نسخه ۹ از DirectX بصورت سخت افزاری پشتیبانی میشه.
اگر بخواهی اصولی برنامه نویسی کنی، باید بگم که مایکروسافت سه سطح برای تخمین امکانات سخت افزار گرافیکی در نظر گرفته که به آنها Tier میگه. Tier 0 برای کارت گرافیک هایی است که قابلیت اجرای DirectX 7 و یا 8 رو دارن. Tier 1 برای DirectX 9 یا بالاتر و Tier 2 که باز هم برای سخت افزارهای DirectX 9 یا بالاتر هستند؛ اما تقریبا همه امکانات گرافیکی از قدرت کارت گرافیک استفاده میکنن.
برنامه شما باید سطح کارت گرافیک رو بر اساس Tier بدست بیاره و براساس اون افکتهای متفاوتی رو اجرا کنه. (کدهای متفاوت)
برای بدست آوردن Tier سیستم مقصد می تونید از RenderingCapability.Tier استفاده کنید.
بنابراین جواب شما این شد که بسته به قدرت کارت گرافیک برخی افکتها ممکن است بصورت نرم افزاری و برخی بصورت سخت افزاری اجرا شوند. باید قدرت سیستم مقصد رو تخمین بزنید و میزان افکت ها رو تنظیم کنید.
برای اطلاعات بیشتر سری به سایت MSDN بزنید.
یک پست احتمالا بدرد بخور دیگه هم در اینجا ببینید.
موفق باشید