PDA

View Full Version : آموزش: آموزش جامع ویژوال بیسیک و OpenGL



m.4.r.m
دوشنبه 10 تیر 1392, 23:54 عصر
دوستان عزیز در این تاپیک جامع دوست دارم آموزش کار با ویژوال بیسیک و OpenGL رو بزارم از مبتدی تا پیشرفته خواهشمندم هر کسی هم اطلاعاتی داشته باشه در این زمینه همین جا قرار بده شاید یه آموزش بزرگ داشته باشیم در زمینه گرافیک و ساخت بازی با ویژوال بیسیک قبلا خواستم با directx شروع کنم دیدم Opengl خیلی بهتر از اون هست و اون تاپیک رو پاک کردم حالا نحوه کار با OpenGL رو قسمت بندی می کنم و هر روزی که تونستم آموزش های مختلف رو براتون میزارم . همراه باشید ....

m.4.r.m
سه شنبه 11 تیر 1392, 00:03 صبح
ابتدا یه توضیح مختصری بدم از OpenGL :

opengl مخفف کلمه Open Graphic Library هستش و از این کتابخانه در همه زبانهای برنامه نویسی میشه استفاده کرد. در اکثر زبانها کار با GL به یک شکله، طوری که شما اگر بتوانید در Visual C برنامه مبتنی بر GL بنویسید می‌توانید همان برنامه را نیز در Visual Basic باز نویسی کنید.


ادامه دارد ....

m.4.r.m
سه شنبه 11 تیر 1392, 00:14 صبح
توضیحاتی مختصر در مورد گرافیک و ...

اﺻﻠﯽﺗﺮﯾﻦ وﻇﻴﻔﻪ ﯾﮏ ﺑﺮﻧﺎﻣﻪ ﮔﺮاﻓﻴﮑﯽ ﺗﻮﻟﻴﺪ ﺗﺼﻮﯾﺮ اﺳﺖ. در ﺻﻔﺤﻪ ﻧﻤﺎﯾﺶ رﺳﺘﺮﯼ ﮐﻞ ﺻﻔﺤﻪ ﺑﻪ ﻣﺠﻤﻮﻋﻪاﯼ از ﭘﻴﮑﺴﻠﻬﺎ ﺗﻘﺴﻴﻢ ﻣﯽﺷﻮد. ﺑﻪ ههمین دﻟﻴﻞ ﺑﺪون ﺗﻮﺟﻪ ﺑﻪ اﯾﻦ ﻣﻄﻠﺐ ﮐﻪ ﺗﺼﺎوﯾﺮ ﭼﮕﻮﻧﻪ در ﺣﺎﻓﻈﻪ ذﺧﻴﺮﻩ ﺷﺪﻩاﻧﺪ، ﯾﮏ ﺗﺼﻮﯾﺮ را ﺑﺎ ﯾﮏ ﺁراﯾﻪ دو ﺑﻌﺪﯼ از ﭘﻴﮑﺴﻠﻬﺎ ﺑﺎ ﮐﺪ ﮔﺬارﯼ رﻧﮕﯽ ذﺧﻴﺮﻩ ﻣﯽﮐﻨﻴﻢ و ﻧﻤﺎﯾﺶ ﻣﯽدهیم . هرﭼﻪ ﯾﮏ ﺗﺼﻮﯾﺮ را ﺑﻪ ﻧﻘﺎط رﯾﺰﺗﺮﯼ ﺗﻘﺴﻴﻢ ﮐﻨﻴﻢ، وﺿﻮح ﺗﺼﻮﯾﺮ ﺑﻴﺸﺘﺮ ﻣﯽﺷﻮد.
ﺑﻨﺎﺑﺮاﯾﻦ ﺑﺮاﯼ اﯾﻨﮑﻪ وﺿﻮح ﺗﺼﺎوﯾﺮ ﻗﺎﺑﻞ ﻣﻘﺎﯾﺴﻪ ﺑﺎﺷﻨﺪ اﺻﻄﻼﺣﯽ ﺑﻪ ﻧﺎم رﯾﺰﻧﻤﺎﯾﯽ ﻣﻄﺮح ﻣﯽﺷﻮد. رﯾﺰ ﻧﻤﺎﯾﯽ ﯾﮏ ﺗﺼﻮﯾﺮ ﻋﺒﺎرت اﺳﺖ از:
ﺗﻌﺪاد ﭘﻴﮑﺴﻞ در هر ﺳﺘﻮن * ﺗﻌﺪاد ﭘﻴﮑﺴﻞ در هر ﺳﻄﺢ
ﻣﻬﻤﺘﺮﯾﻦ ﻣﺴﺎﻟﻪ در ﻧﻤﺎﯾﺶ ﻧﻘﺎط رﻧﮓ ﺁﻧﻬﺎ اﺳﺖ. از روﺷﻬﺎﯼ ﻣﺘﻔﺎوﺗﯽ ﺑﺮاﯼ ﮐﺪﮔﺬارﯼ رﻧﮓ در ﮐﺎﻣﭙﻴﻮﺗﺮ اﺳﺘﻔﺎدﻩ ﻣﯽﺷﻮد ﮐﻪ ﺁﻧﻬﺎ را ﺣﺎﻟﺖ رﻧﮓ ﻣﯽﻧﺎﻣﻴﻢ. رﻧﮓ هر ﭘﻴﮑﺴﻞ ﺑﻪ ﺻﻮرت ﯾﮏ ﻋﺪد دودوﯾﯽ (ﺳﻄﺢ ﺧﺎﮐﺴﺘﺮﯼ) ﯾﺎ ﻣﺠﻤﻮﻋﻪاﯼ از اﻋﺪاد دودوﯾﯽ( RGB ) ﮐﺪ ﺑﻨﺪﯼ ﻣﯽﺷﻮد. در ﺗﺼﺎوﯾﺮﯼ ﮐﻪ ﺑﺼﻮرت RGB ذﺧﻴﺮﻩ ﻣﯽﺷﻮﻧﺪ، رﻧﮓ هر ﭘﻴﮑﺴﻞ داراﯼ ﺳﻪ ﻣﻮﻟﻔﻪ ﻗﺮﻣﺰ،ﺳﺒﺰ و ﺁﺑﯽ اﺳﺖ. ﮐﻪ ﺗﻤﺎﻣﯽ رﻧﮕﻬﺎ ﺑﺎ اﺳﺘﻔﺎدﻩ از اﯾﻦ ﺳﻪ ﻣﻮﻟﻔﻪ ﻧﻤﺎﯾﺶ دادﻩ ﻣﯽﺷﻮﻧﺪ. هر ﯾﮏ از اﯾﻦ ﺳﻪ ﻣﻮﻟﻔﻪ ﻣﯽﺗﻮاﻧﻨﺪ ﻣﻘﺎدﯾﺮﯼ را ﻣﺎﺑﻴﻦ ﺻﻔﺮ ﺗﺎ ٢۵۶ ﺑﮕﻴﺮﻧﺪ. در ﺻﻮرﺗﯽ ﮐﻪ ﻣﻘﺪار ﺻﻔﺮ ﺑﻪ هر ﻣﻮﻟﻔﻪ دادﻩ ﺷﻮد ﻣﻘﺪار رﻧﮓ ﺁن ﻣﻮﻟﻔﻪ ﺑﻪ ﺣﺪاﻗﻞ و در ﺻﻮرﺗﯽ ﮐﻪ ﻣﻘﺪار ٢۵۵ ﺑﻪ هر ﻣﻮﻟﻔﻪ دادﻩ ﺷﻮد ﻣﻘﺪار رﻧﮓ ﺁن ﻣﻮﻟﻔﻪ ﺑﻪ ﺣﺪاﮐﺜﺮ ﻣﯽرﺳﺪ ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل در ﺻﻮرﺗﯽ ﮐﻪ ﻣﻴﺰان رﻧﮓ ﯾﮏ ﭘﻴﮑﺴﻞ را ﺑﻪ ﺗﺮﺗﻴﺐ ٢۵۵,٢۵۵,٠ ﺑﺪهیم رﻧﮓ ﺁن ﭘﻴﮑﺴﻞ در ﺻﻔﺤﻪ ﻧﻤﺎﯾﺶ زرد دﯾﺪﻩ ﺧﻮاهﺪ ﺷﺪ. در ﺑﻌﻀﯽ از ﮐﺪ ﮔﺬارﯾﻬﺎ ﻣﻴﺰان ﮐﺪر ﺑﻮدن ﻣﺎدﻩ را ﻧﻴﺰ ﻣﺸﺨﺺ ﻣﯽﮐﻨﻨﺪ در ﺣﺎﻟﺖ ﺁﻟﻔﺎ در ﺻﻮرﺗﯽ ﮐﻪ ﯾﮏ ﻣﺎدﻩ ﮐﺎﻣﻼ ﮐﺪر ﺑﺎﺷﺪ و ﻧﻮر را از ﺧﻮد ﻋﺒﻮر ﻧﺪهد ﻣﻘﺪار ٢۵۵ را ﺧﻮاهد داﺷﺖ و در ﺻﻮرﺗﯽ ﮐﻪ ﻧﻮر را از ﺧﻮد ﻋﺒﻮر دهد ﻣﻘﺎدر ﮐﻤﺘﺮ از ٢۵۵ را ﺧﻮاهﺪ داﺷﺖ، ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ﻣﺎ ﺑﺮاﯼ ﯾﮏ ﺷﻴﺸﻪ ﺳﺒﺰ ﻣﯽﺗﻮاﻧﻴﻢ ﻣﻘﺎدﯾﺮ 0,255,0,150 را ﺑﺪهیم .

همچنین OpenGL ﯾﮏ راﺑﻂ ﻧﺮم اﻓﺰارﯼ ﺑﺮاﯼ ﺳﺨﺖ اﻓﺰار ﮔﺮاﻓﻴﮏ اﺳﺖ. اﯾﻦ راﺑﻂ ﻧﺮم اﻓﺰارﯼ ﺗقریبا ﺷﺎﻣﻞ ١٢٠ ﻓﺮﻣﺎن ﻣﺠﺰا از هم اﺳﺖ ﮐﻪ ﺑﻪ ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺲ اﺟﺎزﻩ ﻣﯽدهﺪ اﺷﮑﺎل ﻣﻮرد ﻧﻴﺎز ﺧﻮد را ﺑﻪ ﺻﻮرت دوﺑﻌﺪﯼ و اﯾﻦ راﺑﻂ ﻧﺮماﻓﺰارﯼ ﺑﻪ ﺻﻮرت ﯾﮏ راﺑﻂ ﺳﺎدﻩ و ﻣﺴﺘﻘﻞ از ﺳﺨﺖاﻓﺰار ﻃﺮاﺣﯽ ﺷﺪﻩ ﺗﺎ ﺑﺮ رو ﯼ ﺑﺴﻴﺎرﯼ از ﺳﺨﺖاﻓﺰارهﺎﯼ ﻣﺘﻔﺎوت ﭘﻴﺎدﻩ ﺳﺎزﯼ ﺷﻮد. ﺑﺮاﯼ رﺳﻴﺪن ﺑﻪ اﯾﻦ ﻗﺎﺑﻠﻴﺖ هیچ ﻓﺮﻣﺎﻧﯽ در OpenGL ﺑﺮاﯼ اﯾﺠﺎد ﭘﻨﺠﺮﻩ و ﮐﺎر ﺑﺮ روﯼ ﺁﻧﻬﺎ و ﯾﺎ ﮐﺎر ﺑﺮ روﯼ ورودﯼ ﮐﺎرﺑﺮ وﺟﻮد ﻧﺪارد اﻣﺎ همراه اﯾﻦ راﺑﻂ glut ﻋﺮﺿﻪ ﻣﯽﺷﻮﻧﺪ ﮐﻪ ﻗﺴﻤﺖ ﻋﻈﻴﻤﯽ از اﯾﻦ ﻗﺎﺑﻠﻴﺖهﺎ را در ﺧﻮد ﮔﻨﺠﺎﻧﺪﻩاﻧﺪ.
در OpenGL ﻓﺮﻣﺎﻧﻬﺎﯼ ﺳﻄﺢ ﺑﺎﻻ ﮐﻪ ﺑﻪ ﺷﻤﺎ اﺟﺎزﻩ ﻣﯽدهﻨﺪ اﺷﮑﺎل ﭘﻴﭽﻴﺪﻩ ﻣﺎﻧﻨﺪ ﻗﻮرﯼ, ﻣﺎﺷﻴﻦ و ﻏﻴﺮﻩ را ﻃﺮاﺣﯽ ﮐﻨﻴﺪ، وﺟﻮد ﻧﺪارﻧﺪ. ﺑﻠﮑﻪ ﺷﻤﺎ ﺑﺎﯾﺪ اﯾﻦ اﺷﮑﺎل ﭘﻴﭽﻴﺪﻩ را ﺑﻪ ﮐﻤﮏ اﺷﮑﺎل ﺳﺎدﻩ هندسی ﻣﺎﻧﻨﺪ ﭼﻨﺪ ﺿﻠﻌﯽ ها و ﺧﻄﻮط رﺳﻢ ﮐﻨﻴﺪ. اﻣﺎ اﺷﮑﺎل ﺳﺎدﻩ هندسی ﺳﻪ ﺑﻌﺪﯼ هایی مثل کره و ... در بعضی رفرنس های OpenGL هست که کار برنامه نویس را راحت تر خواهد کرد که در جلسات بعدی حتما به توابع OpenGL هم اشاره خواهیم کرد .

هدف از توضیح این قسمت ها به خاطر این بود که ذهنیتی داشته باشیم از نحوه ایجاد گرافیک در کامپیوتر که چگونه رنگ ها کد بندی می شوند و در سیستم و حافظه و در نهایت به دید ما می رسند .

m.4.r.m
سه شنبه 11 تیر 1392, 00:25 صبح
خوب اما پیاده سازی OpenGL :

قبل از هر چیز شما باید ضمیمه زیر رو دانلود کنید و در رفرنس های ویژوال بیسیک این فایل رو اضافه کنید
در ضمن شما با اضافه کردن این فایل به تنهایی نمی تونید از این کتابخانه عظیم استفاده کنید بلکه یکسری توابع به صورت پیشفرض باید بنویسید . به خاطر اینکه همیشه از این توابع در زمان اجرا OpenGL استفاده خواهد کرد .

ادامه دارد ....