ورود

View Full Version : مشکل صفحات ترسیم شده با opengl با پوینتر موس



SAASTN
چهارشنبه 26 اسفند 1388, 00:34 صبح
سلام
در بعضی از سیستم ها (با کارت گرافیک مختلف) هنگام عبور پوینتر موس از روی صفحات ترسیمی توسط opengl پرش های دهشتناکی! بوجود میاد. که این fliker با ناپدید کردن cursor از بین میره.
من برای اینکه مشکل در بعضی از سیستم ها بوجود میاد مجبور شدم موس رو خودم ترسیم کنم، که بخاطر اون مجبورم توی هر بار mousemove صحنه رو (تنها در زیر موس) دوباره ترسیم کنم، که باعث پرش حرکت موس میشه و زمانی که صحنه خیلی سنگینه این عمل تا حدودی آزاردهنده است.
آیا روشی برای رفع این conflict هست؟
اگر جواب منفیه، آیا روشی برای تشخیص این وضعیت هست؟ تا تنها روی سیستم هایی که مشکل دارند موس رو خودم ترسیم کنم.
ضمنا با دلفی می نویسم.
متشکرم

SAASTN
دوشنبه 09 فروردین 1389, 19:58 عصر
کسه دیگه ای این مشکل رو نداشته؟
دوستان لطفا راهنمایی کنید.

pswin.pooya
جمعه 13 فروردین 1389, 11:20 صبح
برای این مشکل فکر کنم بافر دوبل رو فعال نکرده باشی. کلا موقعی که ماوس از روی صفحه رد میشه تصویر پیشت خراب میشه و معمولا یه پیغام redraw صادر میشه که باز هم معمولا اکثر برنامه نویسها به محض رسیدن این پیغام صفحه رو نو سازی میکنن. بهتره صفحه رو زمانی نوسازی کنی که cpu بیکار باشه و یا طی یه بازه خاص و یا طی یه حلقه خاص این رو انجام بدی. مثلا برای glut از تابع gluIdlefunction استفاده کنی (برای ثبت تابع رسم).

کلا حرکت ماوس روی صفحه یه مشکل بزرگ به شمار میره. توی این حالت ماوس مثل یه machine gun عمل میکنه و یه عالمه پیام صادر میکنه که باعث میشه به شدت کارایی پایین بیاد. برای جلوگیری از این امر معمولا ویندوز و یا کتابخانه های جانبی مثل SDL توابعی رو فراهم کردن که پیام های تکراری رو از صف حذف میکنه. برای اطلاعات بیشتر به داکیومنت های اونها مراجعه کنید.

SAASTN
جمعه 13 فروردین 1389, 14:00 عصر
نه، فکر نمی کنم مشکل از ترسیم پیاپی باشه. وقتی من تنها cursor رو hide می کنم مشکل برطرف میشه در صورتی که پیغام MouseMove هنوز داره مخابره می شه و کنترلم به حرکت موس جواب می ده. در صورتی که مشکل تنها از ترسیم در هر بار حرکت موس بود با Hide کردن حل نمی شد.
اما DoubleBuffered رو چک می کنم. متاسفانه کد ما ایزولس و فقط تو ساعتای اداری می تونم چکش کنم.
ممنون

kochol
یک شنبه 15 فروردین 1389, 11:19 صبح
سلام
ممکنه با اپدیت درایور کارت گرافیک هم این مشکل حل بشه چون چیزی که می گی بیشتر شبیه یه باگ است و دبل بافر رو هم که حتما باید انجام بدی.