PDA

نسخه کامل مشاهده نسخه کامل : آموزش OpenGL در دلفی ...



Mahmood_N
31-08-2006, 02:17
سلام ...
این تاپیک رو برای آموزش OpenGL درست کردم ...
برای شروع در مورد OpenGL یه خورده بحث می کنیم ...
--------------------------
OpenGL یک استاندارد با کیفیت برای ساخت نرم افزارهای گرافیکی و البته بازیها هست ...
OpenGL توسط شرکت Silicon Graphics و با زبان C نوشته شده ... ( ولی بحث ما برای دلفیه )
این موتور گرافیکی تنها یک مگابایت از هارد شما رو اشغال می کنه که این می تونه یکی از خوبیهای اون باشه ...
اینم اضافه کنم که OpenGL بر خلاف DirectX اصلا کاری با صدا و یا GamePad یا JoyStick نداره و فقط كارش ساخت اشکال 3D هست که خیلی روان و قدرتمند این کار رو انجام می ده ...
دو نسخه از OpenGL ارایه شده که یکیش نسخه عمومی هست که توی همه ویندوزها هست و مایکروساف اون رو گسترش داده و یکی هم نسخه ای هست که سازندگان سخت افزارهای 3D ارائه دادن که کاربرد بیشتری داره ...
کتابخانه OpenGL بیش از 120 تابع داره که کارهای 3D انجام می دن ...
در ابتدا اول بهتره یک مقایسه از OpenGL و DirectX داشته باشیم ( این مقایسه رو سرپرست تیم سازنده بازیهای Doom و Quake انجام داده ) :
" دو نوع کتابخانه برنامه نویسی 3D تحت Windows وجود دارد :
1. DirectX
2. OpenGL
من به شدت تحت تاثیر سادگی استفاده از API موجود در OpenGL قرار گرفته ام
چندی قبل بازی Quake را با OpenGL نوشتم ، این کار وقت زیادی را به خود اختصاص ندا و کدهای حاصل بسیار ساده و خوانا بود ...
سپس شروع به انتقال کدها از OpenGL به DirectX کردم و هنوز هم این کار را به پایان نرسانده ام !!
DirectX سختیه زیادی را به برنامه نویسان تحمیل می کند بدون این که مزایای قابل توجهی داشته باشد ...
در بعضی موارد یک خط کد OpenGL مساوی با نیم صفحه کد DirectX خواهد بود !!! "
مسالی از توابع در هر دو موتور گرافیکی :
1. OpenGL :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
2. همون کد بالا در DirectX :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
تابعی که بالا مثال زدم برای رسم یک مثلثه که توی یادداشتهای بعدی در موردش زیاد بحث می کنیم ...
فعلا برای پست اول بسه ...
توي پستهاي بعدي جدي تر دنبال مي كنيم ...
موفق باشيد ...

soldier
31-08-2006, 11:08
سلام
خیلی جالب بود
اما بهتره که در مورد OpenGL حرف بزنیم
واسه OpenGL فقط کافیه که کد ها رو بنویسیم؟
یا چیزایه دیگه ای نیاز داریم؟
مثلآ چیزی به uses اضافه کنیم یا خلاصه هر چیزی
که نیاز داریم رو بگو که شروع کنیم.

amin a.^2
31-08-2006, 14:15
تا حالا که خیلی خوب بوده اما هر چی لازم بگو که بدونیم

Mahmood_N
31-08-2006, 14:33
سلام

واسه OpenGL فقط کافیه که کد ها رو بنویسیم؟
یا چیزایه دیگه ای نیاز داریم؟
مثلآ چیزی به uses اضافه کنیم یا خلاصه هر چیزی
که نیاز داریم رو بگو که شروع کنیم.
دلفي كتابخانه OpenGL رو در اختیار داره ...
فقط کافیه که OpenGL رو به قسمت Uses اضافه کنی ...
من بهت پیشنهاد می کنم که از الان شروع نکن !!!
چون یک سری استانداردها داره که باید حتما بدونی ...
توی پست بعدی در موردش بحث می کنیم ...
موفق باشی ...

مرد مباح
31-08-2006, 20:54
شديدا مشتاق ادامه بحث شما هستم.

soldier
02-09-2006, 21:08
سلام
آقا محمود منتظر بقيه آموزش هستيم

Mahmood_N
02-09-2006, 21:38
سلام ، به خاطر غیبت معذرت می خوام ...
از دوستاني که نظر دادن تشكر مي كنم ...
خوب، ادامه بحث :
استانداردهاي OpenGL : ( آشنايي با دستور زبان )
----------------------------------
استانداردها در نوشتن توابع :
دستورات OpenGL با پيشوند gl شروع مي شن و با يک حرف بزرگ ادامه پيدا مي کنن، مثال : glBegin();
ثابتهاي اين زبان برنامه نويسي با _GL شروع مي شن و تمام حروف اونها بزرگ هستن ، مثل : GL_PROJECTION
بعضي از دستورات OpenGL با يک عدد و يک يا چند حرف در آخر پايان مي يابند :

glVertex3f
توي تابع بالا "gl" نشان دهنده کتابخانه OpenGL است و Vertex هم نام تابع ( که بسته به تابع شما قابل تغيير است و براي مثال آورده شده است ) و " 3 " هم تعداد وروديهاي تابع و " f " هم به خاطر اعشاري بودن وروديها آورده شده است ... ( در پستهاي بعدي بيشتر توضيح مي دم )
نکته :
وجود حروف و اعداد مانند تابع بالا در توابع جهت راهنمايي برنامه نويس مي باشند ...
مثلا شما با ديدن عدد 3 در تابع بالا مي تونيد بفهميد که داخل پرانتز بايد 3 تا ورودي ، وارد کنيد ...
----------
خوب ، فکر کنم تا اينجا کمي با طريقه نوشتن دستورات آشنا شده باشيد ...
بحث بعدي در مورد ايجاد پنجره OpenGL است ...
توجه کنيد که براي ايجاد اشياء و غيره توسط OpenGL بايد حتما اونها رو بر روي پنجره مخصوص OpenGL ايجاد کنيد ...
مراحل ايجاد يک پنجره مخصوص OpenGL در 4 مرحله زير انجام مي شه ( که در پست بعدي در موردشون صحبت ميکنيم )
1. ايجاد DC
2. برپايي فرمت نقطه اي
3. اجراي RC
4. اجراي برنامه
--------------------------
موفق باشيد ...

soldier
02-09-2006, 23:52
سلام
خوب بود! اميد وارم كه آسون باشه و راحت ياد بگيريم
منتظر بقيه آموزش ها هستيم!
خداحافظ

Mahmood_N
04-09-2006, 01:39
سلام
برای اینکه مبحث OpenGL یه مبحث طولانیه و توی چند پست و صفحه نمی شه توضیح داد ، تصمیم گرفتم که EBook اون رو براتون بزارم ...
راستش من خیلی وقت پیش این EBook ها رو روی سی دی رایت کردم و از هاردم پاکشون کردم ;)
امروز تازه سی دی رو پیدا کردم :cool: ( وگرنه زودتر براتون می زاشتم ) ;)
خلاصه اگه از روی EBook بخونید بهتره ...
ولی اینم بگم که این EBook ها تعدادشون زیاده و باید توی چند تا پست براتون بزارم ...
این یکی برای این پست :
9 تا EBook :

دانلود ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])
حجم : 710 کیلوبایت
تا پست بعدی ...
موفق باشید ...

soldier
04-09-2006, 11:01
سلام
توی ch01 صفحه 2 نوشته : اگر طرز ضمیمه نمودن واحدها را به برنامه دلفی خود نمی دانید
بهتر است از خواندن این کتان منصرف شوید و به خواندن کتابی در زمینه اصول برنامه نویسی دلفی روی آورید!

خوب یعنی چی؟؟؟؟؟؟؟
یعنی ما که منتظر آموزش بوديم بايد ولش کنیم
اگر می تونی یک آموزش زمینه اصول برنامه نویسی دلفی بهمون بده!EBOOK
یا ضمیمه کردن واحدها رو به دلفی یادمون بده!

اگر هم نیاز نداریم بگو که ادامه کتاب رو بخونیم
يا اگر منظورش با چيز ديگه اي بوده بگو!
فعلآ

Mahmood_N
04-09-2006, 17:32
سلام Soldier جان ...
منظورش همون قسمت Uses هستش که من توی پست قبی گفتم ...
فقط کافیه که OpenGL رو به قسمت Uses اضافه کنی ...
موفق باشی ...

مرد مباح
04-09-2006, 20:38
محمود جان
ممنون
خيلي باحاله.
ولي واقعا ياد گرفتنش طول ميكشه.
اميدوارم خودت هم مارو همراهي كني. ممنون. راستي اولين نمونه كه توي درس 2 داده چي كار بايد بكنه؟
اين كه فقط يك مستطيل سفيد ميكشه. منظورش چيه ؟؟؟

soldier
04-09-2006, 23:52
سلام
اي بابا!
يعني چي!
به خاطر اينكه توي يوزز اضافه اش كنيم!
گفته بريد يك كتاب بخونيد؟!
عجب!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
من كه كامل گيج شدم! نفهميدم بايد چي كار كنم!
خودتون بگيد

Mahmood_N
05-09-2006, 03:44
محمود جان
ممنون
خيلي باحاله.
ولي واقعا ياد گرفتنش طول ميكشه.
اميدوارم خودت هم مارو همراهي كني. ممنون. راستي اولين نمونه كه توي درس 2 داده چي كار بايد بكنه؟
اين كه فقط يك مستطيل سفيد ميكشه. منظورش چيه ؟؟؟
سلام ...
اون پنجره مخصوص OpenGL هستش که درست می شه ...
اون مثلث سفید هم توی همون کد رسم می شه و میتونی برش داری ولی قسمتهای اصلی همون DC و RC هستن و قسمت OnResize مربوط به فرم ...
کد مربوط به مثلث هم بین دو کلمه glBegin و glEnd قرار داره ... ( اگه خواستی می تونی حذفش کنی )
کلمات glBegin و glEnd دو کلمه کلیدی برای شروع و پایان یک رسم هستن ... ( با glBegin رسم رو شروع می کنی و با glEnd تموم می کنی ، بعد هم با glFlush عملکردش رو چک می کنی )
این کد ها رو می تونی توی همون کدها پیدا کنی ...
موفق باشی ...

سلام
اي بابا!
يعني چي!
به خاطر اينكه توي يوزز اضافه اش كنيم!
گفته بريد يك كتاب بخونيد؟!
عجب!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
من كه كامل گيج شدم! نفهميدم بايد چي كار كنم!
خودتون بگيد
سولجر جان بی خیال ، ناراحت نشو .... ;)
منظورش به کسایی بوده که تازه دلفی رو شروع کردن و یهو می خوان برن سراغ OpenGL !!!!
موفق باشی ...
ولی یه توصیه به همه دوستان :
اگه می خواید بازی بسازید دنبال OpenGL نرید ، برای بازی DirectX بهتره ...
OpenGL برای ساخت نرم افزارهای 3D کاربرد بیشتری داره تا بازی چون با صدا و دسته بازی و ... ارتباط بر قرار نمی کنه ...
ولی هر جور که خودتون دوست دارید عمل کنید من فقط توصیه کردم ...
یه چیز دیگه که هست اینه که ممکنه DirectX رو با OpenGL قاطی کنید ( DirectX که خودش پیچیده هست حالا OpenGL هم بیاد روش ؟؟ !! )
بازم اگه جایی از کتاب نامفهوم بود بگید اگه بلد بودم توضیح می دم ...
موفق باشید ... ;)

مرد مباح
05-09-2006, 17:17
ممنون از توضيحاتت.
كشيدن رو فهميده بودم و با اين توضيح تقريبا همه چيز رو متوجه شدم.
فقط يك سوال ديگه.
يك عالمه چك براي بستن استفاده ميكنه.
اين چكها لازمن ؟؟؟ يا براي ورژنهاي قديمي نوشته شده؟؟

Mahmood_N
05-09-2006, 17:41
سلام
خواهش مي كنم ...
راستش منظورت رو نفهميدم !!
منظورت از چكها چيه ؟ براي بستن ؟
در موقع ببستن فذم كه كدي اجرا نمي شه !! فقط براي Destroy یک تابع قرار گرفته که DC و RC ایجاد شده رو حذف می کنه ...
این کار همیشه باید انجام بشه ...
موفق باشی ...

آوا123
10-10-2007, 13:29
چرا بقيه اين آموزش رو كسي ادامه نميده؟؟؟

NoneForce
10-10-2007, 13:38
چرا بقيه اين آموزش رو كسي ادامه نميده؟؟؟

سلام
اين صفحه را ببينيد :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

ميتونيد يكي از مثالها را انتخاب كنيد و در اينجا درموردش صحبت كنيد تا هم خودتون پيشرفت كنيد و هم كمكي به ديگران كرده باشيد.

afshinaghasi
16-10-2007, 19:56
سلام بحث خیلی جالبیه
اما حیف که لینکه دانلود pdf درست نیست

sorrowdancer
31-05-2011, 16:57
سلام دوستان کسی این فایل pdf رو هنوز داره یکجای دیگه آپلود کنه 4shared پاکش کرده !! PLZ :11:

ADanayi
29-07-2011, 19:43
ممنون این مبحث رو من خیلی وقته که منتظرش بودم ولی آدرسی که در پست های قبل داده اید. خرابه (شایدم بدجوری فیلتره!)

Qadiany
24-10-2011, 01:21
سلام.
با تشکر از توضیحاتتون.
سوال :
1 - سرعت نمایش OpenGL بیشتره یا Direct3D ؟
2 - OpenGL با برنامه های افکت به زبان HLSL کار می کنه (VertexShader, PixelShader) ؟
تشکر.

Farzad_p30
03-02-2012, 10:00
سلام
من به نحوه چرخش اشیا در OpenGL نیاز دارم
در برنامه من یک شی وجود داره که باید حرکن کنه
یعنی وقتی کلید جلو رو زدم بره جلو
وقتی کلید عقب رو زدم عقب بره
و وقتی کلید راست رو زدم باید به چپ بچرخه ( نه اینکه بره چپ بلکه مثل وقتی که موس رو به چپ می برم و صفحه می چرخه وقتی هم که دکمه چپ رو میزنم باید به جپ بچرخه)
و برای دکمه راست هم همینطور
ممنون میشم راهنمایی بفرمایید

fghahreman60
04-02-2012, 13:18
سلام وقت بخیر
من سورس بازی پازل رو در opengl میخواستم براتون مقدوره کمکم کنید . ممنونم از لطفتون.

Qadiany
05-02-2012, 01:07
سلام
من به نحوه چرخش اشیا در OpenGL نیاز دارم
در برنامه من یک شی وجود داره که باید حرکن کنه
یعنی وقتی کلید جلو رو زدم بره جلو
وقتی کلید عقب رو زدم عقب بره
و وقتی کلید راست رو زدم باید به چپ بچرخه ( نه اینکه بره چپ بلکه مثل وقتی که موس رو به چپ می برم و صفحه می چرخه وقتی هم که دکمه چپ رو میزنم باید به جپ بچرخه)
و برای دکمه راست هم همینطور
ممنون میشم راهنمایی بفرمایید
باید از ماتریس ها استفاده کنید و فرمولهای Rotation (دوران) و جابجایی تو ماتریس ها. تو کتابای ریاضی روشهاش هست یا تو سایت ویکیپدیا در مورد Rotation و Matrix تو اینترنت جستجو کن.