در درس اول شما ياد
گرفتيد که چگونه يک صفحه OpenGL
بسازيد . در اين درس شما مي آموزيد که چگونه يک مثلث و يک مربع رسم کنيد . ما مثلث
را با
پارامترGL_TRIANGLES
و مربع را با پارامتر GL_QUADS
و با دستورات glVertex3f
خواهيم ساخت . | ||
function
DrawGLScene():bool; // Here's Where We Do All The Drawing
begin
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); // Clear The Screen
And The Depth Buffer
glLoadIdentity(); // Reset The View
وقتي
شما glLoadIdentity
را صدا مي زنيد ، بدين معناست که شما به مرکز صفحه برمي گرديد . X
از چپ به راست Y
بالا به پايين و Z
حرکت به درون و بيرون صفحه خواهند بود . مرکز صفحه OpenGL
نقطه صفر براي X
و Y
خواهد بود . به سمت چپ عددها منفي و به سمت راست مثبت خواهد بود . همينطور حرکت به
سمت بالا مثبت و به سمت پايين منفي است . حرکت به درون صفحه منفي و به سمت بيرون
مثبت است . | ||
glTranslatef(-1.5,0.0,-6.0);
حالا ما به اندازه
نصف صفحه به سمت چپ و به اندازه کافي به داخل صفحه رفته ايم تا بتوانيم مثلث خود را
بسازيم . دستور
glBegin(GL_TRIANGLES)
بدين معناست که ما مي خواهيم يک مثلث رسم کنيم . و دستور
glEnd
به OpenGL
مي گويد که رسم ما تمام شده است . اگر از سه نقطه استفاده مي کنيد بايد از GL_TRIANGLES
استفاده کنيد . رسم مثلث روي بسياري از کارتهاي گرافيکي بسيار سريع است . اگر چهار
نقطه داريد از GL_QUADS
استفاده کنيد و اگر بيش از چهار نقطه داريد از GL_POLYGON
استفاده کنيد . تا آنجا که من شنيده ام کارتهاي گرافيکي همه چيز را به صورت مثلث
درآورده و رسم مي کنند . | ||
glBegin(GL_TRIANGLES); حالا که ما مثلث را در
نيمه چپ تصوير رسم کرده ايم به نيمه سمت راست مي رويم تا يک مربع هم در آن قسمت رسم
کنيم . براي اين منظور دوباره بايد از دستور
glTranslatef(x, y, z)
استفاده کنيم . توجه داشته باشيد که ما قبلاً 1.5 واحد به سمت چپ رفته يم . پس با
حرکت 1.5 واحد به سمت راست تازه به مرکز تصوير مي رسيم و از اين نقطه هم بايد 1.5
واحد ديگر به سمت راست برويم تا به نيمه سمت راست تصوير برسيم . و اين يعني در مجموع
حرکت به اندازه 3 واحد فقط به سمت راست .
glTranslatef(3,0.0,0.0); حالا بياييد مربع را رسم
کنيم . براي اين منظور از پارامتر GL_QUADS
استفاده مي کنيم . هر مربع از 4 نقطه تشکيل شده است و کد اين بخش به کد بخش رسم مثلث
بسيار شبيه است با اين تفاوت که از چهار دستور glVertex3f
براي مشخص کردن چهار نقطه مربع استفاده مي کنيم . بايد به خاطر داشته باشيد که جهت
حرکت همانند حرکت عقربه هاي ساعت است .
glVertex3f( 0.0, 1.0, 0.0);
glVertex3f(-1.0,-1.0, 0.0);
glVertex3f( 1.0,-1.0, 0.0);
glEnd();
glVertex3f(-1.0, 1.0, 0.0);
glVertex3f( 1.0, 1.0, 0.0);
glVertex3f( 1.0,-1.0, 0.0);
glVertex3f(-1.0,-1.0, 0.0);
glEnd();
DrawGLScene:=true; // Everything Went OK
end;
در کتاب book ("OpenGL Programming Guide: The Official Guide to Learning OpenGL, Release 1", J. Neider, T. Davis, M. Woo, Addison-Wesley, 1993) درباره بخشي که حرکات را توضيح داديم راجع به استفاده از کلمه "واحد" توضيح جالبي داده است : اينچ و يا ميليمتر ؟ يا تنها در OpenGL معنيي دارند ؟ خير . کل پروژه و تمامي تغييرات و ترسيم ها بدون واحد هستند . شما براي تجسم فاصله بين 1 و 20 مي توانيد از ميليمتر ، اينچ ، کيلومتر و يا هر چيزي که راحتتريد استفاده کنيد . اين به انتخاب شماست . تنها قاعده اي که بايد به ياد داشته باشيد اين است که از يک واحد يکسان براي تمام پروژه استفاده کنيد | ||
اگر جايي ايرادي مي بينيد و يا فکر مي کنيد با اضافه و يا کم کردن بخشهايي به خوانايي و يا افزايش عملکرد برنامه و يا سطح آموزش اضافه مي شود حتماً با من در ميان بگذاريد
|
| دريافت ليست دلفي نوشته شده توسط Peter De Jaegher
| ||
|
درس سوم -> |
<- درس اول | |