PDA

View Full Version : سوال: DoubleBuffer که در Properties های فرم ها قرار دارد چیست؟



ostovarit
دوشنبه 04 مرداد 1389, 11:40 صبح
DoubleBuffer که در Properties های فرم ها قرار دارد چیست؟
چه زمانی باید True باشه؟
بودن یا نبودنش چکار میکنه و چه فرقی داره لطفا کامل توضیح بدید .

با تشکر

حجتی نیا
دوشنبه 04 مرداد 1389, 12:26 عصر
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.doublebuffered.aspx

http://msdn.microsoft.com/en-us/library/3t7htc9c.aspx

ostovarit
دوشنبه 04 مرداد 1389, 12:54 عصر
بافر دو گانه "Doublebuffering” چيست؟
زمانيکه قرار است چيزي روي نمايشگر نشان داده شود کارت گرافيکي تصويري از آنچه قرار است نمايش داده شود را رسم کرده و سپس اين تصوير را به نمايشگر مي‌فرستد. تصويري که قرار است به نمايشگر فرستاده شود بافر ناميده مي‌شود.
در کارت‌هاي گرافيکي قديمي، تنها يک بافر وجود داشت اين بافر به طور مداوم رسم شده و به نمايشگر فرستاده مي‌شود.
اين روش چند مزيت دارد ولي معايب آن به مراتب بزرگتر هستند. مهمترين مشکل اين روش چشمک زدن تصاوير هنگام به روز آوري آنها روي صفحه‌نمايش است.
امکان خواندن و نوشتن همزمان روي بافر، توسط تکنيک جديدتري با نام بافر دو گانه يا ”Double buffering” فراهم مي‌شود؛ ايده پشت اين تکنيک اين است که کامپيوتر تصوير را تنها روي يکي از دو بافر با نام بافر عقب يا back buffer ريخته و بافر ديگر (با نام بافر جلو يا front buffer) را به نمايشگر مي فرستد. زمانيکه رسم بافر عقب تمام مي‌شود، فرآيندي با نام تعويض بافر يا buffer swap انجام مي‌شود.تعويض بافر، چيزي را جا به جا نمي‌کند، بلکه تنها نام دو بافر را با هم عوض مي‌کند: بافر عقب به بافر جلو و بافر جلو به بافر عقب تبديل خواهد شد.
بعد از تعويض بافر، بافر جلوي جديد که در واقع همان بافر عقب حاوي تصوير است، به نمايشگر فرستاده مي‌شود و نرم‌افزار نيز مي‌تواند روي بافر عقب جديد،‌ طراحي ‌کند. زمانيکه تعويض بافر جديد صورت بگيرد، آنچه که گفته شد مجددا اتفاق مي‌افتد.
در اين شکل از بافر دو گانه، تعويض بافر در هر زماني ممکن است اتفاق بيفتد. مثلا وقتي کارت گرافيکي در حال ارسال اطلاعات به نمايشگر است، ممکن است تعويض بافر رخ دهد. در اين صورت باقيمانده صفحه‌نمايش با تصوير بافرجلويي جديد پرخواهد شد.
اگر محتواي بافر جلويي جديد با بافر جلويي قبلي اختلاف زيادي داشته باشد،‌ همان مشکل گسستگي و پارگي تصوير شکل مي‌گيرد. گسستگي تصوير معمولا در سرعت فريم‌هاي بالا و زمانيکه بازي داراي تحرک زيادي است رخ مي‌دهد. به دليل تحرک بالاي بازي و حرکت سريع، فريم‌ها اختلاف زيادي با هم دارند و گسستگي حاصل نيز براي کاربر ناراحت کننده است.


با توجه به مطلبی که گذاشتم آیا کارتهای گرافیکی قدیم که این خاصیت رو ساپورت نمیکنند در صورتی که ما Double buffering را True کنیم به مشکل خواهند خورد یا نه؟

ostovarit
سه شنبه 19 مرداد 1389, 13:24 عصر
دوستان عزیز من هنوز به پاسخ این سوال نرسیدم:
با توجه به مطلبی که گذاشتم آیا کارتهای گرافیکی قدیم که این خاصیت رو ساپورت نمیکنند در صورتی که ما Double buffering را True کنیم به مشکل خواهند خورد یا نه؟

اصلا این کارتهای قدیمی الان مورد استفاده قرار میگیرند؟

sayan
چهارشنبه 20 مرداد 1389, 00:20 صبح
تا جایی که من میدونم با True کردن این خصوصیت باعث میشه که حافظه ای که اون فرم اشغال کرده دوبرابر در نظر گرفته شود یا به قول خودمون جای بیشتری براش درنظر گرفته شه

مهدی فرزاد
چهارشنبه 20 مرداد 1389, 01:31 صبح
من یه برنامه که از نظر گرافیکی سنگین بود رو روی یه کامپیوتر قدیمی اجرا کردم که باعث فلش فلش شدن فرمم میشد اما این خاصیت رو true کردم مشکل حل شد.