با عرض سلام خدمت خوانندگان همیشگی وبلاگ OpenGL & Computer Graphics :
بررسی و حل یک مشکل در لینوکس ( گرافیک و درایور کارت گرافیکی )
خدمت دوستان عرض کنم مطلبی که امروز برایتان آماده کرده ام مشروح حکایتی ست که بر من گذشت. گفتم شاید این مشکل برای افراد دیگری (( مخصوصا تازه کاران لینوکس )) پیش آید برای همین آن را بصورت یک مقاله کوچک برای شما آماده کردم تا در صورتی که شما نیز به این مشکل برخورد کردید براحتی بتوانید بر آن فائق شوید.
دو روز پیش هنگامی که برای اولین بار اقدام به نصب سیستم عامل سوزی Suse 9.2 نمودم هوس کردم که برای اولین بار از بازیهای سه بعدی که بر روی آن نصب شده بود استفاده کنم. (( البته این ورژن سوزه یک مقدار قدیمیست ولی برای من بهترین انتخاب بود و با نصب آن به کلیه چیزهایی که احتیاج داشتم رسیدم. ضمن اینکه تصور من را نصبت به لینوکس تا حد بسیاری ارتقا بخشید. دست آقای مهدی پیشگوی مدیر سایت تاکس ورلد درد نکنه ))
بهر حال گفتم که هوس کردم بازیهای سه بعدی اون را امتحان کنم. ولی در کمال تعجب دیدم که بطور مثال بازی معروف ( Tux racer ) که در اکثر توزیعات لینوکس هم هست بطور فریم به فریم اجرا میشه. البته این موضوع رو قبلا هم در لینوکس هایی همچون ردهت 9 و ناپیکس 4.0.2 هم تجربه کرده بودم. ولی بطور کلی کم کم داشت این فکر به ذهنم میرسید که لینوکس در زمینه اجرای برنامه های سه بعدی ضعف داره. چون گمان میکردم توزیع های مختلف لینوکس به همراه خودشون درایور کامل کارت گرافیک رو هم نصب میکنن. ( که البته بعدا فهمیدم این فکر کاملا اشتباهه )
بعد از اون رفتم سروقت عشق خودم برنامه Blender 3d و اون رو اجرا کردم. (( لازمه که اینجا یک نکته رو یاد آوری کنم. ببینید دوستان رابط گرافیکی در نرم افزار بلندر همیشه در حال رندر شدن میباشد. یعنی این رابط از طریق استفاده از توابع اوپن جی ال ایجاد شده است و برای نمایش داده شدن محتاج اینه که رندر بشه. )) بهر حال دیدم که برنامه بلندر هم با اشکال اجرا میشه و دچار کندی میشه.
این بود که بفکر افتادم و شروع به تحقیق و بررسی کردم. فهمیدم که بقیه همچین مشکلی ندارند و خیلی راحت و با کیفیت بازیهای سه بعدی اوپن جی ال رو در لینوکس اجرا میکنن با سیستمهایی مشابه سیستم خودم. (( پنتیوم III و 384 MB RAM و nVidia Geforce 5200 ))
این بود که فهمیدم حتما چیزی هست که من توی همه لینوکس هایی که تابحال باهاش کار کردم انجام ندادم. در ضمن بازیهای تحت اوپن جی ال در لینوکس سوزه به من میگفتن که من یا کارت گرافیک ندارم و یا اینکه تنظیمات سه بعدی اون انجام نشده.
با کمی فکر به این نتیجه رسیدم که من تابحال در هیچکدوم از لینوکس هایی که داشتم درایور کارت گرافیکم رو نصب نمیکردم. یعنی اصلا دانلودش نمیکردم چون فکر میکردم لینوکس بطور کامل کارت من رو میشناسه و جدیدترین درایور کارت گرافیکی رو براش نصب میکنه.
این بود که با سر زدن به وبسایت شرکت انویدیا در قدم اول اقدام به دانلود درایور کارت گرافیکم تحت سیستم عامل لینوکس کردم. و پس از مطالعه یک فایل کمکی که مخصوص کاربران لینوکس سوزی بود اقدام به نصب اون کردم. بله دیدمکه معجزه شد. یعنی خط بطلانی بر این تصور باطل که لینوکس در کار با برنامه های سه بعدی ضعف دارد. تموم بازیهای سه بعدی با کیفیت بالا و با نرخ فریم Frame rate بالا اجرا میشدند. برنامه بلندر خیلی خوب و روان اجرا شد و صحنه ها رو رندر میکرد. حتی به نظر من کیفیت اجرا شدن بازیها از ویندوز هم بهتر بود. و بالاخره من به جواب سئوالم رسیدم. تنها با دو دستور در محیط متن لینوکس این درایور بخوبی نصب و پیکر بندی شد.
البته باید بگویم که من قبلا خیلی با لینوکس کار کرده بودم و مقداری هم تحت لینوکس برنامه نویسی کردم. ولی هنگامی که اولین بار در لینوکس ردهت 9 نحوه اجرا شدن بازیهای سه بعدی رو دیده بودم دیگه بیخیال برنامه نویسی سه بعدی در محیط لینوکس شده بودم. هر چند میدونستم من اشتباه میکنم و این غیر منطقیه که لینوکس از پس اجرای برنامه های اوپن جی ال برنیاد. ولی ایراد کارم رو پیدا نمیکردم. (( بخاطر همون تصور غلط که گمان میکردم لینوکس با خودش درایور کارت گرافیک من را بطور کامل شناسایی و نصب میکنه.)) و برنامه نویسی سه بعدی تحت لینوکس رو به روزی موکول کرده بودم که بتونم ایراد کارم رو پیدا کنم.
خلاصه بعد از دانلود و نصب درایور کارت گرافیکم که تنها 12.5 مگابایت حجم داشت به این نکته پی بردم که لینوکس در اجرای برنامه های سه بعدی مبتنی بر اوپن جی ال بسیار توانا و قدرتمند است. لازمه ذکر کنم که این درایور متعلق به کلیه کارت گرافیک های شرکت انویدیا و تحت کلیه توزیع های لینوکس هست که از محیط X-server برای نمایش گرافیکی شون استفاده میکنند. و X-Server هم بستری هست که رابط های کاربری مثل Gnome و KDE بر روی اون اجرا میشوند.
با نصب این درایور به راحتی بازیهای سه بعدی اجرا میشه و دیگه حتی به MESA هم احتیاج نیست. و میتونید به راحتی در محیط های برنامه نویسی مانند Kdevelop و Anjuta و ... برای لینوکس و با استفاده از کتابخانه قدرتمند اوپن جی ال برنامه نویسی کنید. درست به همان راحتی که در ویندوز و بطور مثال با محیط برنامه نویسی Dev-cpp یا Visual Studio و با کمک کتابخانه اوپن جی ال این کار رو میکنید.
بطور مثال میتونید در محیط برنامه نویسی Anjuta ( که در حقیقت یک IDE برای C/C++ هست ) و یا Kdevelop ( این هم یک IDE دیگه برای محیط KDE هست ) با کمک کتابخانه SDL ( برای ساختن پنجره و مدیریت اون ) یا GLUT ( این قدیمیه من بهیچ عنوان توصیه نمیکنم. چون چند ساله که دیگه بروز نمیشه ) یا Gtk+ 2 و یا کتابخانه Xlib برای ساخت پنجره و در نهایت کتابخانه OpenGL به عنوان API گرافیکی برنامه بنویسید و کامپایل کنید.
تا دیروز من تموم برنامه هایی که برای اوپن جی ال مینوشتم تحت ویندوز و با محیط برنامه نویسی Dev-cpp و کامپایلر MinGW ( این همون GCC تحت ویندوز هست ) بود ولی حالا دیگه بطور کامل میتونم یک توسعه دهنده لینوکس باشم.
موفق و موید باشید خدانگهدار