PDA

View Full Version : مشکل در برنامه نویسی OpenGL- فصل چهارم کتاب آقای نصیری



روانشناس
دوشنبه 27 مهر 1383, 14:56 عصر
خوب من تا فصل چهارم کتاب آقای نصیری پیش رفتم و این سوالات برام پیش اومده. از هر کی بلده به خصوص آقای نصیری خواهش می کنم جواب این سوالات رو بده. (اگه سوالات ابتداییه عذر می خوام).

1- اعداد بکار رفته در دستورات ترسیم بر حسب چه واحدی هستند؟ مثلا glVertex2f 2,-1
2- در برنامه اول فصل چهارم در روال Form_Resize اشکال بصورت بسیار کوچک رسم می شدند که پس از حذف تابع glOrtho و فقط استفاده از gluOrtho2d این مشکل برطرف شد. اگه ممکنه در این مورد هم توضیح بدید.
3- شما توابع OpenGL که با gl شروع می شن و توابع Wiggle که با wgl شروع میشن رو توضیح دادید ولی در مورد توابعی که با glu شروع میشن چیزی در کتاب گفته نشده. اگه ممکنه این مورد رو هم توضیح بدید.
4- راستش من هنوز برام جا نیفتاده که چه موقع باید از glMatrixMode استفاده کنیم و از کدام ماتریس؟
5- تعریف Triangle_Strip و Triangle_Fan در کتاب یکیه پس فرقشون چیه؟

با تشکر

روانشناس
سه شنبه 28 مهر 1383, 16:55 عصر
حاج آقا نصیری نماز و روزه تان قبول.
التماس دعا :<:

Vahid_Nasiri
چهارشنبه 29 مهر 1383, 17:54 عصر
1- اعداد بکار رفته در دستورات ترسیم بر حسب چه واحدی هستند؟ مثلا glVertex2f 2,-1

ج: در OpenGL ، واحدهای اندازه گیری مانند متر و میلی متر و غیره معنا ندارند. تنها باید یک "واحد" را در نظر گرفت. این واحد می تواند هر چیزی باشد (به نقل از RED BOOK).
برای مثال اگر رزولوشن مونیتور شما 1024*768 باشد ، تابع gluOrtho2D(0,1024,0,768) دید جاری ترسیمات دو بعدی شما را به Pixels تنظیم می کند اما در رزولوشن های دیگر به صورت هوشمند در هنگام Resize تنظیمات لازم را انجام خواهد داد.
مورد فوق بحث دو بعدی را شامل می شد. در بحث سه بعدی، انتقالات و دور و نزدیک کردن دوربین و غیره را هم اضافه کنید. بنابراین مقیاس هایی نظیر متر و میلی متر کاربردی ندارند. فقط بحث "واحد اندازه گیری" یکسان در کل برنامه کفایت می کند.



2- در برنامه اول فصل چهارم در روال Form_Resize اشکال بصورت بسیار کوچک رسم می شدند که پس از حذف تابع glOrtho و فقط استفاده از gluOrtho2d این مشکل برطرف شد. اگه ممکنه در این مورد هم توضیح بدید.

ج: نه! کوچک نیستند (البته این مطلب نسبی است با توجه به نظرات اشخاص... ).
توسط glOrtho ، صحنه در دیدگاه ما به شکل یک مکعب مستطیل خواهد بود . gluOrtho2d با استفاده از glOrtho برای ایجاد یک مختصات دو بعدی ایجاد شده است(جزئیات آن در فصل 2 موجود است). در مثال زده شده کدی که کامنت شده بود را اگر فعال می کردید بله صحنه کمی بازتر می شد چون آرگومانهای ورودی آن با glOrtho یکی نبود (4 آرگومان اول را مقایسه کنید).



3- شما توابع OpenGL که با gl شروع می شن و توابع Wiggle که با wgl شروع میشن رو توضیح دادید ولی در مورد توابعی که با glu شروع میشن چیزی در کتاب گفته نشده. اگه ممکنه این مورد رو هم توضیح بدید.

ج: یک سری توابع utility با کمک خود OpenGL ایجاد شده و در کتابخانه ای که گفتید ذخیره شده اند. در این مورد یک فصل کامل در کتاب هست (فصل 20 ) و همچنین در فصل های بعدی در موارد لازم به آن اشاره شده است.



4- راستش من هنوز برام جا نیفتاده که چه موقع باید از glMatrixMode استفاده کنیم و از کدام ماتریس؟

ج: در OpenGL عملیات ماتریسی برای دوران ، انتقال و غیره توسط توابع توکار (built-in) میسر شده است. قبل از بکار گیری توابع مربوطه باید مشخص کنید که از چه نوع حالت ماتریسی (مثلا GL_ModelView برای دوران و امثال آن ) می خواهید استفاده کنید. (بهتر است مثالهای حل شده زیادی در این زمینه ببینید که بر روی سی دی همراه به اندازه ی 6 ماه مثال فقط برای دیدن موجود است!)



5- تعریف Triangle_Strip و Triangle_Fan در کتاب یکیه پس فرقشون چیه؟

Hmmmm!!! ، بله! اشتباه از بنده بوده. مرسی.
برای توضیح بیشتر به دایرکتوری Articles_and__Tutorials سی دی مراجعه کنید. فایل OpenGL_Tut.PDF را جستجو نمایید. به صفحه ی 1132 آن مراجعه کنید پاسخ خود را به شکل بصری ( در کتاب مرجع OpenGL Red Book ) خواهید یافت. (این تصویر برای استفاده سایر خوانندگان این تاپیک ضمیمه شد)