واضح آرشیو وب فارسی:سایت ریسک: View Full Version : نحوه استفاده و كار كردن با OpenGL amir_dpr19-08-2006, 07:57 PMسلام دوستان اين تاپيك ايجاد شده تا هر كس OpenGl بلده و با نحوه كار با اون در دلفي آشنايي داره مطلب بده. خودم مي خواستم اول شروع كنم مي خواستم يه فايل بزارم كه اصلا OpenGl چيه ولي بلد نيستم-اگه ممكنه بگيد چه جوري بايد آپلود كنم تا بزارم ممنون mahsoft19-08-2006, 08:14 PMOpenGL چگونه کار ميکند : OpenGL بیشتر از آنکه یک API گرافیکی توصیفی باشد حالت رویه ای دارد. بجای توصیف صحنه و اینکه صحنه چگونه باید ظاهر شود برنامه نویس مراحل لازم را برای دست یافتن به نمایش معین یا یک افکت را تعیین میکند. این مراحل باعث فراخوانی دستورات زیادی از OpenGL میشود. این فرامین برای رسم اشکال ابتدایی گرافیکی مانند خط و نقطه و چندضلعی در صحنه سه بعدی استفاده میشوند. بعلاوه OpenGL نورپردازی و نگاشت بافت و آمیختگی و شفاف نمایی و انیمیشن و بسیاری دیگر از افکت های ویژه سه بعدی و قابلیت های زیاد دیگری را پشتیبانی میکند. OpenGL شامل هیچ تابعی برای مدیریت پنجره و یا محیط بصری نمیباشد. برنامه نویسان این محیط ها را برای برطرف کردن نیازهای سطح بالایشان ایجاد میکنند و سپس با دقت آنها را با دستورات سطح پایین OpenGL برنامه نویسی میکنند. پیاده سازی عمومی : همانطور که قبلا عنوان شد یک پیاده سازی عمومی یک پیاده سازی نرم افزاری میباشد. پیاده سازیهای سخت افزاری برای دستگاههای سخت افزاری ویژه طراحی شده است مانند یک کارت گرافیکی یا یک مولد تصویر. یک پیاده سازی عمومی از لحاظ فنی میتواند بر روی هرکجا اجرا بشود مادامیکه سیستم بتواند تصاویر گرافیکی ساخته شده را نمایش دهد. تصویر 1-2 مکان نمونه ای را نشان میدهد که OpenGL و یک پیاده سازی عمومی اشغال کرده اند هنگامی که یک برنامه در حال اجراست. برنامه نمونه توابع زیادی را فراخوانی کرده است. بعضی از توابعی که کاربر تولید کرده و بعضی ها که توسط سیستم عامل مهیا شده اند یا متعلق به کتابخانه زمان اجرای زبان برنامه نویسی هستند. زمانی که برنامه های ویندوز میخواهند که چیزی را بر روی صفحه خروجی رسم کنند معمولا یکی از توابع API ویندوز را که (رابط دستگاه گرافیکی) نامیده میشود صدا میزنند. GDI شامل متد هایی است که به شما اجازه نوشتن متن و ترسیم اشکال دو بعدی ساده و غیره را میدهد. معمولا سازندگان کارت های گرافیکی یک درایور سخت افزاری با رابط های GDI تهیه میکنند که خروجی را بر روی مانیتور رسم کند. یک پیاده سازی نرم افزاری از OpenGL گرافیک های تقاضا شده توسط یک برنامه را میگیرد و از آن گرافیک سه بعدی یک تصویر دو بعدی رنگی ایجاد میکند. سپس این تصویر را به GDI میفرستد تا بر روی مانیتور نمایش دهد. در بقیه سیستم های عامل نیز وضع به همین منوال است اما شما GDI را با سرویس نمایش محلی سیستم عامل خود تعویض میکنید. OpenGL یک جفت پیاده سازی نرم افزاری مشترک دارد. یکی پیاده سازی نرم افزاری مایکروسافت است که با هر ورژن از ویندوز مانند NT 3.5 و بالاتر و Win95 و 2000 و XP ارایه میشود. SGI یک پیاده سازی نرم افزاری از OpenGL را برای ویندوز طراحی کرد که پیاده سازی مایکروسافت را از دور خارج میکند. این پیاده سازی دیگر به طور رسمی پشتیبانی نمیشود اما هنوز به مقدار زیادی توسط توسعه دهندگان استفاده میشود. که در انجمن های اوپن سورس از مقبولیت و پشتیبانی خوبی برخوردار است. Mesa 3D یک OpenGL مجوز دار نیست. بنابر این بیش از این که یک پیاده سازی رسمی باشد مانند یک همکار برای OpenGL است. پیاده سازی سخت افزاری : یک پیاده سازی سخت افزاری از OpenGL شکل یک درایور کارت گرافیکی را دارد. شکل 2-2 ارتباطش با برنامه مانند شکل 1-۲ است. توجه کنید که فراخوانی های توابع OpenGL به درایور سخت افزار پاس داده میشوند. این درایور خروجی خود را به GDI ویندوز برای نمایش پاس نمیدهد. رابط خودش مستقیما با سخت افزار نمایش گرافیکی رابطه دارد. یک پیاده سازی سخت افزاری به عنوان یک پیاده سازی تسریع شده شناخته میشود. چون گرافیک سه بعدی با کمک سخت افزار بسیار بهتر و سریعتر از یک پیاده سازی صرفا نرم افزاری عمل میکند. چیزی که در تصویر 2-2 نشان داده نشده اینست که بخشی از قابلیتهای OpenGL هنوز به صورت نرم افزاری به صورت بخشی از درایور ایجاد میشود و بقیه قابلیتها و خصوصیات میتواند مستقیما به سخت افزار پاس داده شوند. The Pipeline : کلمه pipeline جهت شرح دادن پروسه ای که میتواند دو مرحله جداگانه یا بیشتر را در بر بگیرد استفاده میشود. تصویر 3-2 یک pipeline خلاصه شده OpenGL را نشان میدهد. به عنوان برنامه ای که توابع API مربوط به OpenGL را فراخوانی میکند دستورات در محلی بنام بافر دستور یا Command Buffer ذخیره میشود. این بافر بالاخره با اطلاعات راس و تکسچر و غیره پر میشود. وقتی این بافر تا آخرین حد پر شود توسط برنامه یا توسط طراحی درایور دستورات و اطلاعات به مرحله بعدی در پروسه Pipeline پاس داده میشوند. اطلاعات مربوط به رئوس معمولا تغییر شکل یافته هستند. در آموزشهای بعدی شما خواهید فهمید که این یعنی چه (برره ای بود). اما برای حالا همین قدر بدانید که "تغییر شکل و نورپردازی" یک مرحله شدیدا ریاضی گونه هستندکه نقاط برای تشریح مختصات هندسی اشیا استفاده میکنند.محاسبات نور پردازی به خوبی بر روی اطلاعات رئوس انجام میشوند تا نشان دهند هر راس با چه شدت رنگی و نوری باید نمایش داده شود. هنگامی که این مرحله به پایان رسید اطلاعات به بخش بعدی Pipeline یعنی Rasterization خورانده میشود. Rasterizer در عمل یک تصویر رنگی از اطلاعات هندسی و رنگها و اطلاعات تکسچر میسازد. این تصویر سپس به بافر فریم ّFrame Buffer منتقل میشود. بافر فریم قسمتی از حافظه دستگاه نمایش گرافیکی (کارت گرافیک ) میباشد. این بدین معنی است که تصویر در صفحه نمایش داده شده است. در یک سطح بالا این نمودار صحیح میباشد اما در یک سطح پایین تر قسمتهای زیاد دیگری نیز در این پروسه وجود دارد. همچنین استثنائاتی هم وجود دارد. همانطور که در نمودار هم پیداست بعضی از اطلاعات از مرحله T&L یا همان Transform & Lighting عبور نمیکنند. در گذشته شتاب دهنده های سخت افزاری OpenGL چیزی جز fast Rasterizer نبودند. آنها تنها بخش Rasterization را شتاب میبخشیدند و پردازشگر سیستم میزبان مرحله T&L را به صورت نرم افزاری و به عنوان بخشی از pipeline انجام میداد. شتاب دهنده های با کیفیت تر (گرانتر) خودشان قسمت T&L را انجام میدادند. به این ترتیب بیشتر مراحل Pipeline در سخت افزار گرافیکی انجام میشد و گرافیک بیشتری بدست می آمد. موفق باشی soldier19-08-2006, 11:32 PMسلام من توي يكي از تاپيك ها آموزش اپن جي ال گذاشته بودم كه 100 تا نمونه داشت! بريد به اون تاپيك دانلودش كنيد اسم تاپيك هم دلفي سه بعدي هست! ممنون Mahmood_N29-08-2006, 05:13 PMسلام ... من يه خورده OpenGL بلیدم ... حتما باهاتون توی این تاپیک همکاری می کنم ... منتظر باشید ... فعلا ... مرد مباح30-08-2006, 09:12 AMما منتظريم. هم آموزشتو اينجا بزار و هم اگه شد لينك فايل خودآموزتو. ممنون soldier30-08-2006, 12:33 PMسلام من هم دوست دارم ياد بگيرم اما اصلآ چيز جالبي نيست علتش هم اينه كه OpenGl فقط یه پروژه هست یعنی مثل دلفی ایکس نیست که در پروژه ات بکارش ببری در ضمن کار باهاش سخته! بهتره به جای OpenGL به فکر یه سیستمی باشیم مثل DelphiX فقط دو بعدی! و برای رسم کردن object ها هم سریع عمل کنه چون دلفی ایکس قدرت زیادی نداره! باید روی این بحث بشه که یه کار جالبی انجام بدیم! موفق باشید مرد مباح30-08-2006, 01:55 PMسولجر جان. يك الگوريتم جديد پيدا كرديم كه سرعت نمايش رو بالا ميبره و بعد از تست خبرشو بهت ميدم. از طرف ديگه OpenGL هم يك دانشه كه شايد بعدا به دردمون بخوره. اميدوارم زودتر آموزشت رو شروع كني. Mahmood_N30-08-2006, 03:00 PMسلام ... سلام من هم دوست دارم ياد بگيرم اما اصلآ چيز جالبي نيست علتش هم اينه كه OpenGl فقط یه پروژه هست یعنی مثل دلفی ایکس نیست که در پروژه ات بکارش ببری در ضمن کار باهاش سخته! بهتره به جای OpenGL به فکر یه سیستمی باشیم مثل DelphiX فقط دو بعدی! و برای رسم کردن object ها هم سریع عمل کنه چون دلفی ایکس قدرت زیادی نداره! باید روی این بحث بشه که یه کار جالبی انجام بدیم! اين ها رو از كي شنيدي ... ؟ همش غلطه !!!! OpenGL هم قدرتمنده و هم از DirectX راحت تره و هم خوانا تره ( البته نه واسه کسائی که با کامپوننت کار می کنن ) !! DelphiX هم همون DirectX هستش ... DirectX که فقط دوبعدی نیست !!!! اصل کار اون روی 3D هستش ... اکثر برنامه های 3D ساز قدیمی توشون از OpenGL استفاده شده ... ( به نظر من که فوق العادست ) دلیلی اینکه در حال حاضر تعداد زیادی برای ساخت بازی از اون استفاده نمی کنند اینه که دیگه مایکروسافت اون رو گسترش نمی ده !! و بیشتر تمرکز مایکروسافت برای گسترش DirectX هستش ... اگه کدهای DirectX رو با OpenGL مقایسه کنی می بینی که هم خیلی کمتره و هم خیلی خوانا تره ... البته به شرطی که برای هر دو از توابع استفاده بشه ( نه کامپوننت !! ) یکی دیگه از خوبیهای OpenGL اینه که می تونی اون رو فارسی بکنی !!! اميدوارم زودتر آموزشت رو شروع كني. چشم ، به زودی شروع می کنم ... پیغامم بهت رسید ؟ فعلا ... موفق باشید ... amin a.^230-08-2006, 04:00 PMسلام منم خیلی خوشم میاد بدونم حالا چه فقط یه پروژه باشه چه یه کامپوننت بزرگ soldier30-08-2006, 04:10 PMسلام اول چرا اين همه قاتي نوشتي دوم اين رو خودم تست كردم! به جاي اپن جي ال اگر مي توني يه آموزش ديركت ايكس بزار در ضمن من گفتم دو بعدي باشه راحت تره! چون ما دو بعد رو نياز داريم! پس نياز داريم كه از قسمت هاي دو بعدي استفاده كنيم! اگر بخواهيد از سيستم سه بعد استفاده كنيم ! (كه نياز نداريم) ! كارمون رو سخت كرديم چون ما فعلآ فقط دو بعدي نياز داريم! ام بدم نمياد چيز جديدي ياد بگيرم! پس يعني منتظر آموزش هستيم! Mahmood_N30-08-2006, 04:16 PMسلام از امشب شروع مي كنم ... توي يه تاپيك جديد .. موفق باشيد ... soldier30-08-2006, 09:18 PMسلام خيلي ممنون! محمود جان ehsan_vesal11-03-2009, 09:32 AMسلام من چطوری می تونم openGl رو فارسی کنم من به glut دسترسی ندارم جون در سیستم عامل ubuntu کار میکنم . digizack12-11-2009, 05:12 PMسلام دوستان هر کی میاد اینجا لطفا هر طوری که می تونه جوابمو بده .مهم نیست چقدر درست بگید فقط اگه سایتی چیزی بلدید یا نمی دونم خلاصه هر راهنمایی که می تونید بکنید.مشکل من اینه که دارم با OpenGL برنامه می نویسم ولی نمی دونم چطور باید ی استیکو بهش ربط بدم.در واقع می خوام و مجبورم هر طور شده تو اپن جی ال با جوی استیک کار کنم.کمک کنید لطفا !!!:37: سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 3171]