مجموعه مقالات رايانه MOGHALAT COMPUTER
سلام دوستان خوبم.
همونطور که قول
داده بودم، امروز، قسمت دوم مقاله ورود به دنياي سه بعدي کامپيوتر رو براتون روي
وبلاگ گذاشتم.
امروز کمي بيشتر
وارد درون کارت گرافيکي ميشيم.
اکثر ماها مي
دونيم
CPU چيه و تقريباً
چيکار مي کنه. ولي شايد کمتر کسي اسم GPU رو شنيده باشه.
با اينکه توي
کامپيوتر تقريباً اکثر ما ها هست و الان داره روي کارت گرافيکي ما فعاليت مي کنه.
اگه دلتون خواست
بيشتر بدونين در مورد GPU مي تونين از اين سايت استفاده کنين :
http://en.wikipedia.org/wiki/Graphics_processing_unit
بهتره يه سري به تاريخچه کارت
گرافيکي بزنيم
:
کامپيوتر هاي
اوليه که بوحود اومده بودند براي پردازش تصاوير در اونها و انتقال آنها به Monitor ، سخت افزارهايي روي برد کامپيوتر تعبيه شده
بود
که معادل
کارت هاي گرافيکي امروز بود. ولي اونها فقط مي تونستند تصاويري رو که بهشون ارسال مي شه به
مونيتور انتقال بدن و نمايش بدن، در واقع عمل Buffering اطلاعات مربوط به صفحه نمايش رو انجام
مي دادند. يعني يه محدوده اي از حافظه بهشون داده مي شد و اون سخت افزار عيناً اون اطلاعات رو
مي
زاشت روي صفحه
مونيتور. اينکار رو به خوبي انجام مي دادند. البته کمي سرعتشون کم بود اما نه به اندازه اي
که چشم متوجه بشه.
براي اينکه تصاوير
متعددي پشت سر هم نمايش داده بشه و ما بتونيم روي مونيتور اطلاعات خودمون رو طوري ببينيم
که هيچ گونه کندي رو متوجه نشيم، اين سخت افزار لازم بود تا رابط بين پردازنده داخلي سيستم و نمايشگر (Monitor) باشه.
بعدها که دنياي
جديد کامپيوتر هاي امروزي (تقريباً بعد از سال 1995) وارد بازار شدندديگه کارت گرافيکي ها فقط
براي انتقال داده از پردازنده به صفحه نمايش طراحي نشده بودند. و اين زمان بود که شتاب دهنده هاي سه بعدي وارد بازار شدند. و اين شروع
دنياي سه بعدي ويژوال سريع، براي کامپيوتر ها بود.
حالا ببينيم
اين شتاب دهنده هاي سه بعدي که روي کارت گرافيکي نصب شده اند به غير از انتقال اطلاعات به روي صفحه
نمايش مونيتور چه کار ديگه اي مي تونند انجام بدند.
قبل از وجود
اين شتاب دهنده ها اگه ما مي خواستيم يه محيط سه بعدي رو شبيه سازي بکنيم به طوري که مثلا
يه توپ رو طوري طراحي کنيم که اگه ماوس رو بگيري و بکشي توپ هم از مرکز بچرخه
و حالتي رو شبيه سازي کنيم که انگار توپ حول يکي از محور ها دوران مي
کنه، بايد در زبان هايي مثل C++ اينکار رو انجام مي داديم که کلي هم مشکل بود و الانم هست.
ولي بعد از ورود
شتاب دهنده هاي سه بعديکه روي کارت گرافيکي بود اوضاع کمي فرق کرد. همونطور که مي دونيم CPU بلده دو تا عدد رو جمع
کنه با تفريق کنه و ... خلاصه اعمالي هست که مي تونه انجام بده و از لحاظ سخت افزاري روي اون تعبيه شده.
درست شبيه اين
اتفاق ها توي کارت گرافيکي هم مي افته الان ديگه کارت هاي گرافيکي براي خودشون توانايي هايي
دارن. مثلا مي تونه دو تا متغيير از نوع ماتريس هاي 64 در 64 رو بگيره و اونها
رو باهم ضرب برداري يا جمع و ... بکنه. اين اعمال با سرعت خيلي بالايي در GPU انجام مي شه. و به دليل همين کارها و توانايي هاي به اين
قسمت
GPU يا همون
واحد پردازش گرافيکي گفته مي شه.
توانايي هاي
زيادي داره و مي تونيم از جمله اونها به موارد زير اشاره کنيم.
مي تونيم
توي کارت گرافيکي با نور ها و اجسام به نحو خيلي جالبي برخورد کنيم.
جالب ترين امکاني
که شايد کمتر کسي در هنگام خريد کارت گرافيکي به اون توجه مي کنه Shader ها هستن. که الان توي بازار فکر مي کنم
کارت هاي گرافيکي با پشتيباني از Shader2.X وجود داره کارت من XFX5500 هستش که از shader 1.1 ساپورت مي کنه.
من وقتي براي اولين بار با Shader ها مواجه شدم و با نحوه کار اونها آشنا شدم، خيلي ذوق زده
شدم.
در مورد Shader ها بعداً کلي بحث خواهيم
کرد.
حالا تقريباً
بطور کلي با
GPU آشنا
شديم و فهميديم که چي هست و کجا هست . چيکار مي کنه.
همونطور که مي
بينين توي اين مقاله زياد به شکل تخصصي در مورد GPU توضيح داده نشد.. سعي مي کنم تا مطالب بطور
کلي و قابل درک براي هممون باشن تا ديد ها رو اصلاح کنيم نه اينکه واقعاً بخوايم يه GPU طراحي کنيم. البته اگر از دوستان کسي بود که
خواست بيشتر بدونه من کاملاً خوشحال مي شم اطلاعاتم رو در اختيارش بزارم..
بعداً اگر عمري
باقي بود، حتماً بحث تخصصي تر هم در اين زمينه خواهيم داشت.
حالا سوالي که
پيش مي آد اينه که خوب، حالا فهميديم GPU چيه و چيکار مي کنه. چطوري باهاش کار کنيم ؟!!!
براي کار با GPU بايد زبونش رو دونست.
زبانهاي رابط وجود دارن که کار رو براي ما آسون مي کنن. چون واقعاً کار مستقيم با GPU خيلي خيلي سخته.
يکي از محيط
هايي که مي شه به دنياي 3D کارت گرافيکي وارد شد و براش برنامه نوشت VS.NET هست که با استفاده از DirectX sdk انجام مي شه. OpenGL هم مجموعه اي از API ها رو برامون فراهم مي کنه
که بتونيم با کارت گرافيکي صحبت کنيم و براش برنامه بنويسيم. بهتره بدونيم که اينها چه فرقي باهم دارن و آيا به عير از اينها Solution هاي ديگه اي هم براي
برنامه نويسي براي کارت گرافيکي هست يا نه؟
در جواب به اين
سوال که آيا به غير از اين راهها راه ديگه اي هم براي برنامه نويسي براي کارت گرافيکي
هست يا نه، بايد بگم که بله هست. ولي پرطرفدارترين و توانمندترين ها اين ها هستند.
و اما اينکه چه فرقي باهم دارن؟ اول
اينکه DirectX يک نرم افزاره که
روي سيستم هاي عامل ويندور نصب مي شه و يک نرم افزار شتاب دهنده سه بعدي هست که
کار کارت گرافيکي رو کنترل مي کنه. براي اجراي نرم افزارهاي سه بعدي که با DirectX SDK نوشته شدند حتماً
بايد اين نرم افزار نصب باشه و معمولاً روي سيستم عامل windows خوب کار مي کنه. ( من تا حالا نسخه DirectX تحت ساير سيستم
عامل ها مثل Linux رو تست نکردم
ببينم وجود داره يا نه. اگر کسي بدونه خوشحال مي شم بگه ) . ولي برنامه هايي
که با توابع API مربوط به OpenGL نوشته مي شن معمولاً مستقل از سيستم عامل و
نياز به ساير نرم افزار ها کار مي کنن. البته به اين معني نيست که براي اجرا به
هيچ چيزي نياز نداره. بعداً مفصل بررسي مي کنيم.
هفته بعد که
ميام با يه مقاله عملي و کار با DirectX ميام. و ورود به دنياي برنامه نويسي سه بعدي رو با DirectX تجربه خواهيم کرد.
موفق باشين.
فعلاً
نظر هم که
نمي دين
.
نوشته شده توسط: کهکشان
:: کل بازديدها :: :: بازديد امروز :: :: بازديد ديروز :: :: مطالب قبلي ::
RSS
خانه
شناسنامه
پارسي بلاگ
پست الکترونيک
7517
88
128
:: موضوعات وبلاگ ::
:: درباره من ::

:: لينک به وبلاگ ::
|
:: لينک دوستان من ::
چند سايت مرتبط
:: لوگوي دوستان من ::

:: موسيقي وبلاگ ::
:: اشتراک ::
نام: | |
ايميل: | |
