nino22

معرفی تکنیک triple buffering

Recommended Posts

بازي‌ها معمولا تنظيمات گرافيکي زيادي دارند. اين تنظيمات مي‌تواند شامل فعال يا غير فعال کردن امکانات و تکنولوژي‌هاي پردازش تصاوير و يا سطح جزئيات گرافيکي درون بازي باشد. ما معمولا در مورد اينکه کاربران چه قابليت‌هايي را درون بازي فعال يا غير فعال کنند صحبت نمي‌کنيم و آن را به عهده کاربر مي‌سپاريم تا با توجه به سخت‌افزار سيستم خود، بهترين تنظيمات را اعمال کند. يکي از تکنيک‌هايي که در اکثر بازي‌هاي امروزي ديده مي‌شود، بافر سه گانه يا "triple buffering” است. قصد داريم امروز شما را با اين تکنيک پردازش تصاوير آشنا کنيم و در ادامه نيز اين توصيه را خواهيم داشت که هنگام اجراي بازي‌ها، حتما آنرا فعال کنيد.

شروع مشکل

حتما تا به حال هنگام بازي کردن با مشکل گسستگي و برش‌هاي خطي تصاوير، مواجه شده‌ايد. براي غلبه بر اين مشکل معمولا توصيه مي‌شود که تکنيک "همزمان سازي تعويض بافر با سرعت نوسازي عمودي" يا vsync فعال شود. vsync سرعت فريم درون بازي را با توجه به سرعت نوسازي نمايشگر(refresh rate)، محدود کرده و مشکل پارگي تصاوير را برطرف مي‌کند، ولي vsync در عوض اين کار، اولا حداکثر سرعت فريم را معادل سرعت نوسازي نمايشگر محدود کرده، ثانيا يک تاخير در نمايش تصوير نيز ايجاد مي‌کند. به دليل همين اثرات منفي vsync روي سرعت فريم، هنگام اجراي تست‌هاي سخت‌افزاري، اين قابليت غيرفعال مي‌شود تا سرعت فريم واقعي و مطابق با قدرت سخت‌افزار، اندازه‌گيري شود.

اين مقدمه‌اي بود تا متوجه شويد ايده بافر سه گانه به چه دليل شکل گرفته است. اما قبل از هر چيز تکنيک‌هاي قديمي‌تر بافر دوگانه و vsync را به طور کامل شرح مي‌دهيم بعد از آن سراغ بافر سه گانه و مزاياي آن مي‌رويم.

بافر دو گانه "Double buffering” چيست؟

زمانيکه قرار است چيزي روي نمايشگر نشان داده شود کارت گرافيکي تصويري از آنچه قرار است نمايش داده شود را رسم کرده و سپس اين تصوير را به نمايشگر مي‌فرستد. تصويري که قرار است به نمايشگر فرستاده شود بافر ناميده مي‌شود.

در کارت‌هاي گرافيکي قديمي، تنها يک بافر وجود داشت اين بافر به طور مداوم رسم شده و به نمايشگر فرستاده مي‌شود.

اين روش چند مزيت دارد ولي معايب آن به مراتب بزرگتر هستند. مهمترين مشکل اين روش چشمک زدن تصاوير هنگام به روز آوري آنها روي صفحه‌نمايش است.

امکان خواندن و نوشتن همزمان روي بافر، توسط تکنيک جديدتري با نام بافر دو گانه يا ”Double buffering” فراهم مي‌شود؛ ايده پشت اين تکنيک اين است که کامپيوتر تصوير را تنها روي يکي از دو بافر با نام بافر عقب يا back buffer ريخته و بافر ديگر (با نام بافر جلو يا front buffer) را به نمايشگر مي فرستد. زمانيکه رسم بافر عقب تمام مي‌شود، فرآيندي با نام تعويض بافر يا buffer swap انجام مي‌شود.تعويض بافر، چيزي را جا به جا نمي‌کند، بلکه تنها نام دو بافر را با هم عوض مي‌کند: بافر عقب به بافر جلو و بافر جلو به بافر عقب تبديل خواهد شد.

بعد از تعويض بافر، بافر جلوي جديد که در واقع همان بافر عقب حاوي تصوير است، به نمايشگر فرستاده مي‌شود و نرم‌افزار نيز مي‌تواند روي بافر عقب جديد،‌ طراحي ‌کند. زمانيکه تعويض بافر جديد صورت بگيرد، آنچه که گفته شد مجددا اتفاق مي‌افتد.

در اين شکل از بافر دو گانه، تعويض بافر در هر زماني ممکن است اتفاق بيفتد. مثلا وقتي کارت گرافيکي در حال ارسال اطلاعات به نمايشگر است، ممکن است تعويض بافر رخ دهد. در اين صورت باقيمانده صفحه‌نمايش با تصوير بافرجلويي جديد پرخواهد شد.

اگر محتواي بافر جلويي جديد با بافر جلويي قبلي اختلاف زيادي داشته باشد،‌ همان مشکل گسستگي و پارگي تصوير شکل مي‌گيرد. گسستگي تصوير معمولا در سرعت فريم‌هاي بالا و زمانيکه بازي داراي تحرک زيادي است رخ مي‌دهد. به دليل تحرک بالاي بازي و حرکت سريع، فريم‌ها اختلاف زيادي با هم دارند و گسستگي حاصل نيز براي کاربر ناراحت کننده است.

vsync

ساده‌ترين راه براي برطرف شدن گسستگي تصاوير، اين مي‌تواند باشد که تعويض بافر زماني صورت گيرد که نمايشگر براي نشان دادن تصوير بعدي، آماده باشد. در اين صورت، نمايشگر تصوير فرستاده شده را به طور کامل نمايش داده و دوره نوسازي عمودي (vertical refresh cycle) بعدي نمايشگر در حال شروع است.همزماني تعويض بافر با نوسازي عمودي نمايشگر، vsync گفته مي‌شود.

vsync، حداکثر سرعت فريم درون بازي را مطابق با سرعت نوسازي نمايشگر تنظيم مي‌کند. سرعت نوسازي براي اکثر ال سي دي‌هاي موجود، 60 تا 75 هرتز است بنابراين با فعال کردن vsync، اگر چه مشکل گسستگي تصوير برطرف مي‌شود، ولي سرعت فريم درون بازي نيز از 60 تا75 فريم در ثانيه فراتر نخواهد رفت. توجه داشته باشيد که اين 60 فريم در ثانيه، سرعت فريم لحظه‌اي است نه متوسط! بنابراين مي‌بينيد که سرعت درون بازي با فعال کردن vsync ممکن است دچار افت قابل توجهي شود.

فعال کردن vsync تاخير نمايش را نيز افزايش مي‌دهد. تاخيري که در نتيجه عملکرد vsync ايجاد مي‌شود باعث خواهد شد فاصله زماني بين رسم بافر و نمايش آنرا بيشتر از حالت عادي باشد. اين مورد نيز يکي ديگر از معايب vsync است. البته تاخير ورودي، هميشه وجود دارد و غير ممکن است بتوان فريم در حال ترسيم را همزمان روي نمايشگر به تصوير کشيد ولي اين تاخير بايد حداقل ميزان ممکن باشد.

بافر دو گانه مشکل چشمک تصاوير را حل مي‌کند ولي مشکل جديدتري به نام گسستگي را وارد ماجرا مي‌کند. در نهايت با بافر دوگانه، دو انتخاب خواهيد داشت:vsync را غير فعال کنيد و با گسستگي تصوير دست و پنجه نرم کنيد يا vsync را فعال کنيد و با کاهش سرعت فريم و تاخير در هر ورودي کنار بياييد!

بافر سه گانه Triple buffering

اما نگران نباشيد! تکنيک بافر سه گانه بهترين ترکيب از راه‌حل‌هاي بالا را به شما مي‌دهد. همانطور که از نام آن پيداست از سه بافر استفاده مي‌کند دو بافر عقب و يک بافر جلو؛ بافر اضافي به کامپيوتر فضاي اضافي براي نگهداري يک بافر قفل شده را مي‌دهد. اين بافر قفل شده به نمايشگر فرستاده مي‌شود، بدون آنکه مشکل گسستگي تصوير پيش بيايد، ضمن اينکه دو بافر ديگر نيز براي رسم تصاوير جديد، در اختيار نرم‌افزار خواهد بود.

در اين روش، نرم‌افزار يکي از بافرهاي عقبي را رسم کرده و شروع به ترسيم بعدي مي‌کند. زمانيکه نوسازي انجام مي‌شود، تعويض بافر صورت گرفته و جاي آخرين بافر عقب کامل شده، با بافر جلو عوض مي‌شود.

البته تکنيک بافر سه گانه، فضاي بيشتري از حافظه گرافيکي بين 15 تا 25 مگابايت اشغال مي‌کند.

ولي کارت‌هاي گرافيکي امروزي حداقل 512 مگابايت حافظه گرافيکي دارند و اين فضاي اضافي براي آنها مشکلي ايجاد نخواهد کرد.

با تکنيک بافر سه گانه سرعت فريم و تاخير ورودي، همانند زماني خواهد بود که vsync غير فعال است ولي کيفيت تصاوير و نرم‌ و روان بودن آنها مشابه زماني است که vsync فعال است.

بافر سه گانه يک عيب کوچک نسبت به بافر دو گانه دارد که بايد به آن اشاره شود. فرض کنيد رسم يک فريم، تنها کمي پس از نوسازي نمايشگر تمام مي‌شود، در اين حالت اگر از بافر دوگانه با vsync غير فعال استفاده شود، فريم از قسمت کوچک بالاي آن که بعد از زمان نوسازي قرار گرفته پاره مي‌شود ولي در شرايط مشابه و براي بافر سه گانه تاخير ورودي کمي بيشتر خواهد بود چرا که تا زمان کامل شدن فريم بايد صبر شود.

حتي اگر اين مورد را برتري بافر دو گانه با vsync خاموش نسبت به بافر سه گانه بدانيم احتمال رخ داد آن در حدي است که توصيه مي‌شود باز هم از بافر سه گانه استفاده شود.

فعال کردن بافر سه گانه از طريق تنظيمات گرافيکي موجود در بازي يا پانل کنترلي تنظيمات کارت گرافيکي در محيط ويندوزصورت مي‌گيرد. البته همه بازي‌ها در منوي خود داراي اين قابليت نيستند. براي اين دسته از بازي‌ها مي‌توانيد بافر سه گانه را از پانل کنترلي تنظيمات کارت گرافيکي در محيط ويندوز فعال کنيد.


منبع :ictnews

به اشتراک گذاشتن این پست


لینک به پست
اشتراک در سایت های دیگر
مهمان
این موضوع نسبت به پاسخ بیشتر بسته شده است.

  • مرور توسط کاربر    0 کاربر

    هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.