شاید شما بخواهید اشکالی را که رسم کرده اید به سایز(اندازه)های مختلف در آورید . 

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

 نمایش با مختصات و ویژگی های خودش بوده  اما ما  در برنامه جدیدمان میخواهیم

 از برنامه قبلیمان استفاده کنیم اما از سایز ومکان شکل در پنجره راضی نیستیم

 در واقع دیدمان به  پنجره عوض شده است. به عکس پرچم پاناما نگاه کنید . ابتدا

 تمام سایز پنجره را گرفته  اما بعد هم کوچکش کردم وهم مکانش را تغییر دادم. 

برای مثال:

void mydisplay(){

     glClear(GL_COLOR_BUFFER_BIT);

//glViewport(0,0,200,400);

     glBegin(GL_POLYGON);        

glVertex2f(-0.9,0.4);

glVertex2f(-0.5,0.8);

glVertex2f(-0.125,0.4);

glEnd();

glFlush();

}

اما الان می خواهید دید پنجره نمایش نسبت به این شکل تغییرکند مثلا مثلث به

 جای اینکه مثل این برنامه در ربع دوم با این سایز کشیده شود در مکان دیگری از

 صفحه نمایش با سایز دیگری کشیده شود.

نکته مهم 1 : برای گرفتن نتیجه تابع glviewport را قبل از glBegin بنویسید.

برای اینکارها از تابع glViewport استفاده میشود. شکل کلی تابع glViewport به

 صورت زیر است:

(طول شئ , عرض شئ , مختصات Y , مختصات glViewPort( X

نکته مهم 2 :این تابع بر حسب پیکسل است یعنی مختصات دهی بر حسب

 پیکسل میباشد.


این هم عکس برای فهم بیشتر ودرک کاربرد:


سایت آپلود عکس فیروز      سایت آپلود عکس فیروز


نکته مهم 3:مختصات (0،0 ) پنجره در اپن جی ال گوشه سمت چپ پایین

 صفحه است.  در حالی که خود پنجره نمایشی  مختصات دیگری برای

 صفر وصفرش دارد وآن گوشه سمت چپ بالای صفحه است.  

آپلود عکس و فایل