رفتن به مطلب
مرجع رسمی سی‌پلاس‌پلاس ایران
  • 0
Mahan.v

ساخت رابط کاربری با opengl


سوال

سلام

من به تازگی با opengl کار میکنم

میخواستم بدونم ایا منطقی هست که به جای ساخت ابجکت های گرافیکی توسط کتابخانه window.h (در ویندوز) و یا x11.h (داخل لینوکس) من خودم داخل کد c یا cpp بعد از ساخت پنجره مربوط به opengl ابجکت ها را خودم و داخل opengl بسازم و قابلیت های کلیک شدن و سلکت شدن و ... خودم اضافه کنم؟؟

از این منظر که بتونم ابجکت های سفارشی با هر شکل و ظاهری را بسازم و در کل میخوام کنترل کل برنامه دست خودم باشه، چون اینجوری عداوه بر  این که میدونم ظاهر برنامه چطور ساخته شده ،حجم برنامه هم خیلی کم میشه در مقایسه با qt

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

3 پاسخ به این سوال تا کنون داده شده است

پست های پیشنهاد شده

  • 0

درود،

اگر تنها دلیل شما کم حجم شدن برنامه است، این دلیل کافی نیست و از نظر من منطقی هم نیست.

مزایای کیوت رو در نظر بگیرید، چند‌سکویی بودن و پشتیبانی از ویژگی‌های متنوع که سال‌هاست خودش رو ثابت کرده. آیا چیزی که می‌خواهید بسازید علاوه بر این ویژگی‌ها موارد دیگری هم به همراه کم حجم‌تر بودن را دارد؟ هرچند حجم برنامه شاید در زمان گذشته بسیار مهم بود، اما اکنون دیگر نیازی برای نگرانی در این باره وجود نداره.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0
ارسال شده در (ویرایش شده)
در 2 ساعت قبل، کامبیز اسدزاده گفته است :

درود،

اگر تنها دلیل شما کم حجم شدن برنامه است، این دلیل کافی نیست و از نظر من منطقی هم نیست.

مزایای کیوت رو در نظر بگیرید، چند‌سکویی بودن و پشتیبانی از ویژگی‌های متنوع که سال‌هاست خودش رو ثابت کرده. آیا چیزی که می‌خواهید بسازید علاوه بر این ویژگی‌ها موارد دیگری هم به همراه کم حجم‌تر بودن را دارد؟ هرچند حجم برنامه شاید در زمان گذشته بسیار مهم بود، اما اکنون دیگر نیازی برای نگرانی در این باره وجود نداره.

ممنون

اگر حجم را در نظر نگیریم، ایا باز هم منطقی نیست؟

و اینکه ایا برنامه های بزرگ و با ظاهر زیبا وجود دارد که رابط ان با opengl نوشته شده باشد نه با api های سیستم عامل؟؟ 

و کلا برتری استفاده از این api ها چیست؟؟

چیزی که من فهمیدم اینه که api ها محاسبات مربوط به ابجکت ها مثل اندازه ،مکان و .. را داخل cpu انجام میدهند و نتجه به کارت گرافیک فرستاده میشه و از اونجا به صفحه نمایش، ولی با opengl این محاسبات هم داخل کارت گرافیک انجام میشه و نیازی به cpu نیست، به نظر من این یک برتری حساب میشه، درسته؟؟ اگر درسته چرا استفاده از opengl عمومی نیست و فقط برای بازی سازی از اون استفاده میشه؟؟

ممنون میشم یه توضیح بدید که من متوجه تفاوت این دو بشم

ویرایش شده در توسط Mahan.v

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0
در در 3 اسفند 1399 در 19:20، Mahan.v گفته است :

ممنون

اگر حجم را در نظر نگیریم، ایا باز هم منطقی نیست؟

و اینکه ایا برنامه های بزرگ و با ظاهر زیبا وجود دارد که رابط ان با opengl نوشته شده باشد نه با api های سیستم عامل؟؟ 

اکثر برنامه‌های زیبایی که در حال حاضر می‌بینید نسبت به نوع سیستم‌عامل و تصمیمات توسعه‌دهنده و منظور استفادهٔ آن توسعه یافته‌اند. بعضی از آن‌ها به صورت کاملاً بومی تحت رابط‌های برنامه‌نویسی خودِ سیستم‌عامل و چهارچوب‌های اختصاصی طراحی شده‌اند، و برخی تحت یک سری کیت‌ها و کتابخانه‌های چندمنظوره.

  • برای مثال، برنامه‌های خالص (نه چند‌سکویی) بومی در سیستم‌عامل ویندوز معمولاً تحتِ رابط‌های برنامه‌نویسی بومی خود ویندوز Win32 Api یا MFC توسعه می‌یابند. رابط‌های برنامه‌نویسی Win32 Api بسیار سطح پایین بوده و استفاده از آن بسیار دشوار است با این مزیت که هر کاری می‌توان با آن انجام داد. نوع MFC را می‌توان به صورت منسوخ شده در نظر گرفت چون در محصولات مدرن دیگه ازش یاد نمیشه.
  • در سیستم‌عامل مک رابط‌های Cocoa برای این منظور نیز ارائه شده‌اند.
  • از طرفی در لینوکس ما رابط‌های برنامه‌نویسی مستقیمی برای ساخت و ساز در کنار هستهٔ سیستم‌عامل نداریم. اما پروتکل‌هایی برای ساخت و ساز این مبحث وجود داره که به نام X Window System شناخته می‌شوند که تحتِ کتابخانه‌هایی مثل GTK، FLTK یا Qt و wxWidgets در سطوح بالا‌تر در دسترس و به راحتی می‌شه باهاشون کار کرد. این گزینه‌ها به صورت چند سکویی هستند و نیازی نیست شما نسبت به هر نوع سیستم‌عامل از اول برنامه‌نویسی انجام دهید.

مزایای این نوع کتابخانه‌ها بیشتر از آن‌چیزی است که شما فکرش رو می‌کنید.

پیشنهاد من این است، اگر دیدگاه چند‌منظوره دارید، به جای درگیر شدن با سطوح پایین‌تر از رابط‌های برنامه‌نویسی (صرفاً جهت ساخت رابط‌کاربری) از کتابخانه‌ها و چهارچوب‌های مناسب مانند Qt استفاده کنید. و یا اینکه اگر محدود به یک پلتفرم کار می‌کنید سعی کنید باز هم از رابط‌های سطح‌بالای آن پلتفرم استفاده کنید.

در ویندوز Win32 تحت دات‌نت، کوکوآ در مک و GTK در لینوکس.

در در 3 اسفند 1399 در 19:20، Mahan.v گفته است :

و کلا برتری استفاده از این api ها چیست؟؟

برتری استفاده از رابط‌های اختصاصی هر یک از سیستم‌عامل‌ها، صرفاً بهینه‌سازی و هماهنگی بسیار بالا و دسترسی به تمامی ویژگی‌های یک پلتفرم است. البته کتابخانه‌هایی مانند Qt نیز در لایه‌های زیرین خودشان هماهنگی‌های لازم را با این رابط‌های برنامه‌نویسی پیاده‌سازی کرده‌اند تا نیازی نباشد شما با آن‌ها درگیر شوید و تا حد قابل قبولی از آن ویژگی‌ها پشتیبانی می‌کنند. بنابراین، از لحاظ این که در همان اندازه کارآیی خواهند داشت هم تا حد بسیاری خیالتان راحت مشکل خاصی پیش نمیاد.

در در 3 اسفند 1399 در 19:20، Mahan.v گفته است :

چیزی که من فهمیدم اینه که api ها محاسبات مربوط به ابجکت ها مثل اندازه ،مکان و .. را داخل cpu انجام میدهند و نتجه به کارت گرافیک فرستاده میشه و از اونجا به صفحه نمایش، ولی با opengl این محاسبات هم داخل کارت گرافیک انجام میشه و نیازی به cpu نیست، به نظر من این یک برتری حساب میشه، درسته؟؟ اگر درسته چرا استفاده از opengl عمومی نیست و فقط برای بازی سازی از اون استفاده میشه؟؟

ممنون میشم یه توضیح بدید که من متوجه تفاوت این دو بشم

به طور همیشگی خیر، در موارد لزوم از پردازندهٔ مرکزی برای پردازش برخی از مسائل استفاده می‌شود، مانند زمانی که راه‌انداز (درایور) کارت گرافیک قابل شناسایی نباشد و مجبوراً از روش‌های شبیه‌سازیِ رابط استفاده شود که در این صورت از پردازندهٔ مرکزی استفاده خواهد شد.

از طرفی OpenGL فقط برای بازی‌سازی مورد استفاده قرار نمی‌گیرد، حتی نسخه‌های توسعه‌یافتهٔ آن با عنوان وُلکان را بررسی کنید.

کتابخانه‌هایی مانند کیوت در صنایع مختلف تمامی کارهای تصویر‌سازی، ساخت فرم، اشیاء و رندرینگ بخش‌های یک برنامه را به لطف OpenGL، Direct3D و امثال آن تولید می‌کنند.

اخیراً اتفاق خوبی که در مورد کیوت رُخ داده است، این است که نسبت به هر پلتفرم، از راه‌انداز و رابط‌های برنامه‌نویسی اختصاصی همان سیستم‌عامل استفاده می‌کند. برای مثال در ویندوز از Direct3D در مک از Metal و در لینوکس از Vulkan و OpenGL.

به طور کلی این کتابخانه‌ها کارهای سطح پایین‌ را خودشان مدیریت می‌کنند و نیازی نیست شما با آن‌ها درگیر شوید، مگر اینکه بخواهید یک کتابخانه یا چهارچوبی مانند کیوت بسازید که قطعاً نیاز خواهد داشت بر روی هر یک از این رابط‌های اختصاصی تسلط و اشراف کامل داشته باشید.

بزرگترین مزیت کتابخانه‌ای مانند کیوت در این است که وابستگی به پلتفرم در آن معنا ندارد و شما می‌توانید در هر پلتفرمی که هستید رابط‌های کاربری مورد نظر محصول خود را بسازید.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو ملحق شوید

شما همین الآن می‌توانید مطلبی را ارسال و بعداً ثبت‌نام کنید. اگر حساب کاربری دارید، و با حساب کاربری خود مطلب ارسال کنید.
نکته: مطلب شما قبل از انتشار نیاز به بازبینی توسط میانجی‌گر‌ها دارد.

مهمان
پاسخ به این سوال ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از ۷۵ اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به عنوان یک لینک به جای

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


  • کاربران آنلاین در این صفحه   0 کاربر

    هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.

×
×
  • جدید...