آموزش تخصصی ویژوال بیسیک 6

مسائل مربوط به برنامه نویسی ویژوال بیسیک 6

آموزش تخصصی ویژوال بیسیک 6

مسائل مربوط به برنامه نویسی ویژوال بیسیک 6

آموزش opengl قسمت چهارم

در جسه چهارم آموزش OpenGL یاد میگیرین که :

۱- اشیای خود را با چند رنگ مختلف رسم کنین. (برای مثال گوشه بالا سمت راست آبی و نیمه پایینی مربع قرمز باشد و وسط مربع نیز ترکیبی از این دو رنگ.)

۲- اشیای سه بعدی رسم کنین.

۳- چگونگی متحرک سازی اشیای سه بعدی.

-------------------------------------------------------------------------------------------------------------------

۱- رنگ آمیزی اشیا:

یکی از قابلیت های مهم OpenGL ترکیب رنگ های مختلف در یک شئ است. که در این کار هر راس از شئ رنگ متفاوتی میگیرد. برای این کار تابعی وجود دارد که نام آن glShadeModel است . این تابع به OpenGL میگوید که اشیای ما فقط یک رنگ بگیرند یا با چند رنگ مختلف رنگ آمیزی شوند. این تابع دو ثابت دارد:

۱: smFlat فقط یک رنگ میتوانیم به شئ اختصاص دهیم.

۲: smSmooth می توانیم ترکیبی از رنگها را به شی اختصاص دهیم.

در حالت پیش فرض مقدار تابع glShadeModel برابر smFlat است که ما در این صورت فقط یک رنگ میتوانیم به شئ مان اختصاص دهیم.

باید همیشه این نکته را توجه داشته باشید که تابع glShadeModel قبل از بلوک glBegin / glEnd بیاید که در غیر این صورت خطا رخ میدهد.

در مثال زیر یک مثلث با رنگ های قرمز و سبز و آبی رسم میکنیم:

glShadeModel smSmooth

glBegin bmTriangles

glcolor3f 1,0,0

glVertex2f 0.5, 0

glColor3f 0 , 1 , 0

glVertex2f 0 , 0.5

glcolor3f 0 , 0 , 1

glVertex2f -0.5 , 0

glEnd

حالا برنامتون رو اجرا کنین و نتیجه رو مشاهده کنین.

حالا برای تمرین مقدار تابع glShadeModel را برابر smFlat قرار دهید و نتیجه رو نگاه کنین.


--------------------------------------------------------------------------------

مهمترین بخش آموزش OpenGL :

۲- رسم اشیای سه بعدی:

برای رسم اشیای سه بعدی همانند رسم اشیای ۲ بعدی عمل میکنیم . یعنی اینکه با فراخوانی بلوک glBegin .../.../glEnd میتوانیم اشیای سه بعدی رسم کنیم. رسم اشیای سه بعدی بسیار بسیار ساده و آسان است و برای برنامه نویسان OpenGL لذت بخش ترین بخش برنامه نویسی است. ما برای رسم اشیای سه بعدی به جای استفاده از تابع glVertex2f از توابع glVertex3f و یا glVertex4f استفاده می کنیم . مطمئنم که فهمیدید . بله در تابع glVertex2f همان طور که از شماره ۲ آن معلوم است توانایی رسم اشیای ۲ بعدی را دارد اما توابع glVertex3f , glVertex4f بر اساس شماره آنها توانایی رسم اشیای سه بعدی را دارند.

شکل کلی تابع glVertex3f به صورت زیر است:

glVertex3f X , Y , Z

که در این تابع x و y همان مختصات معمولی رئوس شئ هستند ولی z عمق شی را نشان می دهد.

مختصات اشیای سه بعدی:

کسانی که برنامه نویس هستند قطعا مختصات سه بعدی رو هم بلدند اما مختصات سه بعدی مختصاتی فرضی است و فقط با مغز انسان قابل درک است. در مثال بعد یک مثلث سه بعدی رسم میکنم:

مثال: رسم مثلث ۳ بعدی:

glShadeModel smSmooth

glBegin bmTriangles

glColor3f 1,0,0

glVertex3f 0.5 , 0, 0

glColor3f 0,1,0

glVertex3f 0 , 0.3 , 0

glColor3f 0,0,1

glVertex3f -0.5 , 0 , 0

glEnd

مثال بالا را اجرا کنین و نتیجه کدهایی که نوشتین رو نگاه کنین.

ممکنه بعد از اجرای برنامه با خودتون بگین که ما یک مثلث سه بعدی رسم کردیم ولی چرا از یک بعد قابل روئیت بود ! برای اینکه از تمامی ابعاد و از همه طرف مثلث رو ببینین باید اون رو متحرک کنین.(یعنی حرکت بدین.)


--------------------------------------------------------------------------------

۳- متحرک کردن اشیای سه بعدی:

برای متحرک کردن اشیای سه بعدی OpenGl تابعی دارد که نام آن glRotatef است . تابع glRotateF دارای ۴ پارامتر است و شکل کلی آن به این صورت است:

مختصات Z , مختصات Y , مختصات X , سرعت حرکت glRotatef

در این تابع هر چه مقدار سرعت حرکت بیشتر باشد شئ مورد نظر ما با سرعت بیشتری حرکت میکند .

در مثال زیر یک مثلث سه بعدی با سه رنگ متفاوت را به حرکت در می آوریم:

glRotatef 2 , 0.5 , 0.5 , 0.5

glShadeModel smSmooth

glBegin bmTriangles

glColor3f 1,0,0

glVertex3f 0.5,0,0

glColor3f 0,1,0

glVertex3f 0,0.3,0

glColor3f 0,0,1

glColor3f -0.5,0,0

glEnd

مثال بالا رو هم حتما اجرا کنین و نتیجه رو ببینین.

همون طور که در مثال بالا مشاهده می کنین تابع glRotatef نیز باید در قبل و خارج از بلوک glBegin/glEnd باشد که در غیر این صورت...

--------------------------------------------------------------------------------

جلسه چهارم آموزش OpenGL نیز به پایان رسید ولی کلاغه به خونش نرسید. و کسی هم نظر نداد.

امیدوارم تا جلسه آینده خوب تمرین کنین
نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد