واضح آرشیو وب فارسی:سایت ریسک: Mahmood_N06-10-2006, 12:05 PMسلام دوستان ... تصميم گرفتم آموزش OpenGL رو به صورت کاربردي شروع کنم ... من توي يه پست ديگه هم قبلا آموزش رو تا يه جاهايي نوشته بودم ولي چون اون پست شلوغ شد و ديگه کم کم داشت Down مي شد ، گفتم که يه پست جديد بدم و از ابتدا شروع کنم ... خوب ... براي آشنايي مقدماتي با OpenGL به لينک زير بريد : ادامه بحث : در ابتدا طريقه ساخت يک پنجره مخصوص OpenGL رو آموزش مي دم : ( نکته مهم : براي هرگونه استفاده از توابع و رسم اشکال 2 بعدي يا 3 بعدي با OpenGL بايد پنجره نخصوص اون رو ايجاد کنيد ) خوب ... مراحل اين کار : 1. ايجاد DC 2. برپايي فرمت نقطه اي 3. ايجاد RC نکته مهم : در هنگام خروج از برنامه بايد DC و RC ساخته شده را حذف نماييم که بعدا بحث خواهيم کرد ... خوب در ابتدا بايد چند پروسجر رو به فرم برنامتون اضافه کنيد : 1. پروسجر CleanUp که براي پاک کردن DC و RC به کار مي ره : !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! در پروسجر بالا ، DC و RC را حذف مي کنيم و در صورتي که با خطا مواجه شويم پيغامي ظاهر خواهد شد ... 2. پروسجر InitGL براي شروع به کار پنجره مخصوص : !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!!در پروسجر بالا از سه تابع استفاده شده : ( 1. glClearColor : براي تعيين رنگ به کار مي رود 2. glMatrixMode : اين تابع ماتريس جاري را تعيين مي کند ( از ماتريسها براي تعيين مکان اشياء و مکان دوربينها استفاده مي شود که سه مقدار دارد : GL_MODELVIEW که ماتريس پيشفرض مي باشد، GL_PROJECTION و GL_TEXTURE . البته تابع ديگري هم استفاده شده به نام glLoadIdentity که ماتريس قابل تغيير فعلي رو به ماتريس اصلي و واحد تبديل مي کنه ) 3. glOrtho : که ديد سه بعدي براي اشياء را فراهم مي کند ) 3. پروسجر DrawGLScene که براي ايجاد قابليت رسم و رسم استفاده مي شود : !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! در پروسجر بالا هم ابتدا قابليت GL_DEPTH_TEST ( مربوط به عمق مي شود و با 39 مقدار ديگر قابل تغير است ) به برنامه اضافه مي شود و در آخر هم توابعي براي رسم به کار رفته است ... اگر توجه کنيد از تابع glVertex3f براي رسم استفاده شده است که تمام آنها بين بلوکهاي Begin و end قرار گرفته اند ... براي رسم اشياء بايد نام آنها را در قسمت Brgin وارد کرده و سپس شروع به رسم کنيم و سپس با بلوک end به رسم خود پايان دهيم ... از تابع glFlush که در پايان آمده هم براي اطمينان از صحت رسم استفاده مي شود ... خوب ... 4. پروسجر SetDCPixelFormat که براي ترسيم فرمت نقطه اي استفاده مي شود ... !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! چون در پروسجر بالا از توابع اي استفاده شده که قبلا توضيح داده شد ، ديگه از توضيح اونها صرف نظر مي کنيم ( با کمي نگاه کردم به کد مي تونيد کارش رو بفهميد ، البته اگه سئوالي پيش اومد حتما بپرسيد ) خوب پروسجرها تمام شدن ، حال مي ريم روي فرم تا رويدادهاش رو تنظيم کنيم : اول در خاصيت FormCreate کد زير رو بنويسيد : !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! بعد در خاصيت FormDestroy کد زير رو بنويسيد : !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! بعد در خاصيت FormPaint کد زير رو بنويسيد : !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! حالا در خاصيت FormResize کد زير رو بنويسيد و تمام : !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! توجه : دستورات hrc: HGLRC و f_Hdc : LongInt را در قسمت Var در اول کدهاي فرم به عنوان متغير تعريف کنيد ... حالا ديگه تموم شد ... البته ما در کدهاي بالا از توابعي استفاده کرديم که کامل توضيح داده نشدن ، ولي در پست بعدي فقط در مورد توابع و کاربردهاي اونها صحبت مي کنيم ... موفق باشيد ... Mahmood_N10-10-2006, 04:24 PMكسي نظري چيزي نداره ؟ ... !!!! فردا صبح بحث بعدي رو شروع مي كنم ... موفق باشيد ... مرد مباح10-10-2006, 05:54 PMمن كه قبلا نظرم رو داده بودم. شديدا منظر آموزشات هستم. ممنون سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 1202]