50 likes | 172 Views
Gamming with Qt. OpenGL. OpenGl به معنای گرافیک سریع ؟ در GPU های قابل برنامه ریزی جدید می توان از OpenGl , Direct3D, OpenCl استفاده کرد. دلیل استفاده از OpenGl : در دسترس بودن در اکثر platform ها امکان دسترسی به تمام امکانات مورد نیاز در GPU را در اختیار ما می گذارد.
E N D
OpenGL • OpenGlبه معنای گرافیک سریع ؟ • در GPU های قابل برنامه ریزی جدید می توان از OpenGl, Direct3D, OpenCl استفاده کرد. • دلیل استفاده از OpenGl: • در دسترس بودن در اکثر platform ها • امکان دسترسی به تمام امکانات مورد نیاز در GPU را در اختیار ما می گذارد. • و با استفاده از ابزار هایی که به صورت extension ها عرضه می شود می توان به امکاناتی که در اختیار ما نمی گذارد نیز دست یافت. • Qt از زمان نسخه 4 دارای موتور گرافیکیOpenGl می باشد.
OpenGL (ES) 2 • API ای است که GPU های قابل برنامه ریزی را مدل می کند. • یعنی شما برنامه های کوچکی به نام shaders می نویسید و از OpenGL می خواهید آنها را کامپایلو روی GPU اجرا کند. • دو نوع shader وجود دارد: • برای پردازش موقعیت ها(vertices) • برای پردازش پیکسل ها(fragments) • در اصل به OpenGl می گوییم می خواهیم تعدادی مثلث و مستطیل بکشیم و با استفاده از پردازش موقعیت، موقعیت هر کدام را تعیین می کنیم. • سپس GPUپیکسل های مربوط به هرکدام از مثلث ها را ایجاد کرده و پردازش پیکسل رنگ هر کدام را مشخص می کند. • API راه های متفاوتی برای ارسال اطلاعات میان CPU و GPU فراهم می کند.
QPainter • این کلاس فرایندی بسیار بهینه شده برای بیشتر نیاز های نقاشی در برنامه های GUI فراهم می آورد. • از کشیدن ساده ترین مانند خط و نقطه تا کمان و مسیرهای پیچیده. • شی این کلاس نقاشی را با دستور begin شروع کرده و با end پایان می یابد. • قابلیت تنظیم font، استفاده از texture، gradiant و ... را نیز دارد. • قابلیت انتقال سه بعدی را دارد تا به اشیا شکل پرسپکتیو بدهد. • با استفاده از backend های مناسب و استفاده ترکیبی از نرم و سخت افزار بهترین عملکرد را پشتیبانی می کند. • Backends: • Raster: rendering in pure software, like rendering QImages • OpenGL 2.0(ES) : primary backend for hardware accelerationed graphics. • OpenVG: for standard 2D and Vector graphics.
QPainter -> OpenGL • برای فعال کردن موتور OpenGL کافی است از Qpainter برروی QGLWidgetاسفاده کنیم. • امکاناتی که Qpainter در اختیار می گذارد و نیاز توسط موتور OpenGL پیاده سازی شود: • Simple primitives (Rectangles, convex, polygons, ellipses, etc.) • Text • Pixmap • Strokes • Complex vector path (QPainterPath) • و هم چنین امکانات رنگ آمیزی با QBrush • Solid Color • Linear gradients • Radial gradients • Bitmap patterns • Textures • همچنین امکان انتفال سه بعدی و برش