Cross-platform GUI Frameworks for 3D Apps and Games: Qt vs wxWidgets

Slides:



Advertisements
Similar presentations
Programming with OpenGL - Getting started - Hanyang University Han Jae-Hyek.
Advertisements

Introduction to Mendeley. What is Mendeley? Mendeley is a reference manager allowing you to manage, read, share, annotate and cite your research papers...
Lecture 4: Embedded Application Framework Qt Tutorial Cheng-Liang (Paul) Hsieh ECE 424 Embedded Systems Design.
QT GUI Programming CS340 – Software Design © 2009 – Jason Leigh University of Illinois at Chicago.
Web Design with Cascading Style Sheet Lan Vu. Overview Introduction to CSS Designing CSS Using Visual Studio to create CSS Using template for web design.
Data Access Worldwide May 16 – 18, 2007 Copyright 2007, Data Access Worldwide May 16 – 18, 2007 Copyright 2007, Data Access Worldwide Building Great Looking.
Guide to Oracle10G1 Introduction To Forms Builder Chapter 5.
A Guide to Oracle9i1 Introduction To Forms Builder Chapter 5.
A Guide to Oracle9i1 Creating an Integrated Database Application Chapter 8.
1 Computing for Todays Lecture 22 Yumei Huo Fall 2006.
Linux Qt Graphical User Interface (GUI) Development In this session, we will cover Qt GUI development tools including: Qt Creator for remote debug and.
Development of mobile applications using PhoneGap and HTML 5
QT Intro. 김기형
LAMAD Symbian Qt install and deploy Installing Qt SDK and deploying Qt applications.
Wir schaffen Wissen – heute für morgen A.C.Mezger An EPICS Display manager with Qt.
An Overview of Qt - asankar1. Agenda About Qt –A brief intro of Qt Qt development tools –Tools used for building Qt application Qt Architecture –The underlying.
Oct ROOT 2002, CERN, Geneva Qt-Based Implementation of Low Level ROOT Graphical Layer By V.Fine.
Qt Igor November 8, 2002 Friday’s HENP Group Meeting.
EPICS Qt Update Paul Martin 1. Australian Synchrotron 3GeV, 216m circumference synchrotron 8 Beamlines 12 Software Engineers IMBL – Worlds Widest Beam.
Mobile Programming Lecture 1 Getting Started. Today's Agenda About the Eclipse IDE Hello, World! Project Android Project Structure Intro to Activities,
Zubanov Alexei, 2006 Aug 07 – Sep 28 QtROOT package extension with Coin3D lib.
Blanchette and Summerfield, Ch. 2
1 INF160 IS Development Environments AUBG, COS dept Lecture 06 Title: Dev Env: Code::Blocks (Extract from Syllabus) Reference:
Computing IV Visual C Introduction with OpenCV Example Xinwen Fu.
Josh Kilgore Obi Atueyi Tom Calloway Ye Tian 1 Software Engineering Spring 2010.
Bertrand Bellenot ROOT Users Workshop Mar ROOT GUI Builder Status & Plans ROOT & External GUI World MFC, FOX, Qt, PVSS… Snapshot of the Future.
GUI’s Part Two wxWidgets components. Resources for wxWidgets Sample code on course website wxWidgets web site.
ANDROID Presented By Mastan Vali.SK. © artesis 2008 | 2 1. Introduction 2. Platform 3. Software development 4. Advantages Main topics.
QtQuick Training Course Module One. What is it? Why use it? Who uses it? 1 Things to know about Qt Module One Objectives Declarative UI Syntax Examples.
Introduction to Matlab & Data Analysis
Introduction to Mendeley. What is Mendeley? Mendeley is a reference manager allowing you to manage, read, share, annotate and cite your research papers...
Getting Started The structure of a simple wxWidgets program, Look at where and how a wxWidgets application starts and ends, how to show the main window,
FLTK Tutorial.
Session 1 SESSION 1 Working with Dreamweaver 8.0.
Scalable Game Development William Roberts Senior Game Engineer
Using Qt for GUI development Brad Whitlock March 2002.
CHAPTER TWO INTRODUCTION TO VISUAL BASIC © Prepared By: Razif Razali 1.
What’s new in Kentico CMS 5.0 Michal Neuwirth Product Manager Kentico Software.
Visual Linker Prototype presentation.
1 Chapter 12 GUI C/C++ Language Programming Wanxiang Che.
CNS 1410 Graphical User Interfaces. Obectives Students should understand the difference between a procedural program and an Event Driven Program. Students.
SE-3910 Real-time Systems Week 7, Class 1 – GStreamer – QT SE Dr. Josiah Yoder Slide style: Dr. Hornick Much Material: Dr. Schilling, Some from.
Dale Roberts Introduction to Visual Programming Dale Roberts, Lecturer Computer Science, IUPUI Department of Computer and.
Overview of PVSS 3.6 Oliver Holme IT-CO. 16/11/2006JCOP Project Team Meeting New features in 3.6 New Installer for PVSS on Windows New Qt User Interface.
DEV330 Visual Studio.NET IDE Tips and Tricks Billy Hollis Author / consultant.
Graphical Enablement In this presentation… –What is graphical enablement? –Introduction to newlook dialogs and tools used to graphical enable System i.
 Installation of Android Development Environment  Creating the App with OpenGL ES API  Running the App on Emulator Android App Development.
QT Programming QT Programming Ruku Roychowdhury. Background QT is a cross platform application framework. Widely used to develop GUI applications. Originally.
. The ideas behind Qt and a live demo Qt in Education.
Overview GUI Programming with GTK+ and GLADE 장정철.
XP Tutorial 8 New Perspectives on Microsoft Windows XP 1 Microsoft Windows XP Object Linking and Embedding Tutorial 8.
SE-3910 Real-time Systems Week 7, Class 1 – Announcement – GStreamer – Bins Boardshots – QT Swing & Qt Signals & Slots – Code – Example SE Dr. Josiah.
Introduction to Objective-C Spring Goals An introduction to Objective-C As implemented by the Apple LLVM Compiler 4.0 (a.k.a. Clang) Only the basics…
New Project Model UI Primary Author: Mikhail Sennikovsky Major contributors: Mikhail Voronin, Oleg Krasilnikov, Leo Treggiari Intel Corporation September,
Active-HDL Server Farm Course 11. All materials updated on: September 30, 2004 Outline 1.Introduction 2.Advantages 3.Requirements 4.Installation 5.Architecture.
Interstage BPM v11.2 1Copyright © 2010 FUJITSU LIMITED FORMS.
+ Responsive Technology Performance, efficiency and elegance are the three key elements that make our platform unique. Each of the features in this presentation.
July FLTK The Fast Light Toolkit • A C++ graphical user interface toolkit • Can be used under X, Windows, MacOS • Supports OpenGL • Provides: – Interactive.
Qt Development Frameworks Past, Present and Future by Knut Yrvin – Dec 2009.
WxPython for Everyone Charles Shapiro Atlanta Linux Enthusiasts May 2009.
1. 2 Qt Toolkit ● C++ toolkit for cross-platform GUI application development – GUI functions (GUI = graphical user interface) – Data access components,
The Basics of Android App Development Sankarshan Mridha Satadal Sengupta.
Mobile Application Development with MeeGo™ - Touch Apps & UI Design
RAD Certification Checkpoint #2 Introducing RadStudio (Hello World)
QT graphical user interface framework
Mobile Application Development with MeeGo™ - Programming with SDK
Qt Programming.
The Designer.
The Basic Usage and The Event Handling in Glade.
Windows Forms in Visual Studio 2005: An in-depth look at key features
Presentation transcript:

Cross-platform GUI Frameworks for 3D Apps and Games: Qt vs wxWidgets April 1, 2011 Nima Nikfetrat AmirSam Khataie

Introduction Ultra Entertainment , a new game development company GUI frameworks to accelerate the production of: 3D tools / editors for game development. C/C++ Cross-platform GUI frameworks Qt wxWidgets. Third-party or built-In GUI generators: “Qt Designer” “DialogBlocks” We present candidate frameworks and tools Present our 3D sample applications Ranking for each section

Introduction Binary Tools + Source codes (Game Engines): How the company uses or sells our 3D tools: Binary Tools + Source codes (Game Engines): To distribute/sell the binary format + source codes A few customers ($1,000$ to $+50,000 per license / per game) Binary format tools (Game / Apps): Only binary format (bundled with the game) Thousands of customers Rank: Poor (1) to excellent (5) Criterion: Low impact (1) to High impact (4)

Introduction of wxWidgets wxWidgets was started in 1992 by Julian Smart at the University of Edinburgh Initially for Unix and Windows Later Mac platform, WinCE, etc. Supported by volunteers (such as AOL) GUI framework + more : Network, Clipboard , drag & drop, Multithreading, Image loading and saving, Database, Platform Details: wxGTK (GTK+ 2.0) wxX11 (X11) wxMotif (X11 using Motif) wxOSX (Cocoa or Carbon API) wxMSW (Windows API)

Hello world, wxWidgets For each compiler and platform: Libraries must be compiled (very fast, less than 5 minutes) Configuring compilers are a bit complex and different class MyApp : public wxApp { public: virtual bool OnInit(); }; //------------------------------------------- class MyFrame : public wxFrame MyFrame (const wxString& title); void OnQuit (wxCommandEvent& event); void OnAbout (wxCommandEvent& event); private: DECLARE_EVENT_TABLE() // Using Macros BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU (Minimal_Quit, MyFrame::OnQuit) EVT_MENU (Minimal_About, MyFrame::OnAbout) END_EVENT_TABLE() IMPLEMENT_APP (MyApp)

wxWidgets features Widgets will be defined with IDs (Similar to Win32 API) Uses Macros for Event handling (Similar to MFC) Platform specific flags for methods/classes: Always documentations must be checked Lacks: No integrated UI builder No integration with compilers (Only manually as a library) A third party GUI generator is really needed

(A GUI Generator for wxWidgets) DialogBlocks (A GUI Generator for wxWidgets)

DialogBlocks DialogBlocks is NOT a drag-and-drop tool !! Price: $90 (student $47) DialogBlocks is NOT a drag-and-drop tool !! More efficient portable dialogs with sizers Can create “gcc” / “VC++” project files Using outputs of DialogBlocks: generated C++ .h and .cpp file A separate XRC resource file (for each dialog) A global XRC resource file (contains all dialog resources) copy and paste the C++ or XRC code into your own project

No Drag&Drop Any platforms

C++ Source Codes inside the dialog class

.xrc format (XML)

Generated Event for a button

OpenGL in Qt (3D Rendering) wxGLCanvas class, 3D view can be displayed on: widgets wxPanel wxFrame To display: Split the window: wxBoxSizer Flags: wxHORIZONTAL, wxVERTICAL

Introduction of Qt Nokia acquired Trolltech for $153 million, 2008 Not the end of freedom for Qt: GPL license  LGPL (Qt 4.5, March 2009)

Hello world, Qt setupUi: Automatic UI generation #include “myApp.h" #include <QtGui/QApplication> int main(int argc, char *argv[]) { QApplication app(argc, argv); myApp win; win.show(); return app.exec(); } setupUi: Automatic UI generation .ui file: An XML-based file format buttonBox = new QDialogButtonBox(test1Class); buttonBox->setObjectName (QString::fromUtf8("buttonBox")); buttonBox->setGeometry (QRect (80, 320, 156, 23)); buttonBox->setStandardButtons (QDialogButtonBox::Cancel | QDialogButtonBox::Ok);

Signals and Slots, Qt // ** Auto-Connect ** private slots: void on_pushButton_clicked(); // void on_<object name>_<signal name>(); void myApp::on_pushButton_clicked() { QMessageBox::information(this, tr("Text"), lineEdit1->text(), QMessageBox::Cancel); } // ** Without Auto-Connect ** connect (pushButton, SIGNAL (clicked()), this, SLOT (showTextMSg())); // Notice Macros and new keywords

Qt Visual Studio integration No complex setup No libs configuration Exclusive Qt Menu and wizard available Dynamic or static libs

Qt Designer (GUI Generator for Qt)

Qt Designer

Qt Designer Example: clicked()  showText() Edit Signal / Slots First Implement methods in .cpp Connect signals to slots Example: clicked()  showText()

Qt Designer Extended properties Visual text paragraph, font , color editor (html format)

Qt Designer Style sheet: Customizing appearance of widgets ToolTip WhatsThis Morph to other widgets

Qt Designer’s .ui file (XML) to C++ The qmake tool: detects .ui file generates the makefile rules The uic tool: converts .ui file into C++ puts the result in ui_name.h

Qt Widgets **Custom Widgets are visible in QtDesigner**

OpenGL in Qt (3D Rendering) QGLWidget class: Enable OpenGL graphics to be rendered within a UI. 3D scenes can be displayed on widgets (can be placed in layouts) QGLShader class: Compiling OpenGL shaders Displaying: QGLWidget subclass as a QtDesigner plugin Manually inside the source codes

Comparison and Evaluation

Property Editor Required for any Game editors Available for wxWidgets: Available for Qt : QtPropertyBrowser framework (by source codes from Nokia) Available for wxWidgets: wxPropertyGrid (Active SourceForge project) (Now Part of wxWidgets)

Summary of Evaluation 1 5 3 4 Rank: Poor (1) to excellent (5) Qt 4.7 wxWidgets 2.9.1 Priority of Criteria Rank (Qt) Rank (wxWidgets) Standard widgets Fully satisfied 1 5 Advanced widgets Yes Very customizable 3 4 Custom Widgets Yes Plugins, Visual Property Editor External Source Code Built-In Rank: Poor (1) to excellent (5) Criteria: Low impact (1) to High impact (4)

Summary of Evaluation Advanced 2D/3D hardware accelerated features: Qt 4.7 wxWidgets 2.9.1 Priority of Criteria Rank (Qt) Rank (wxWidgets) Basic 3D support Yes 4 5 Advanced 3D support Compiling Shaders No 1 3 2D hardware rendering 2

Portability and Compatibility Compilers Integration Summary of Evaluation Qt 4.7 wxWidgets 2.9.1 Priority of Criteria Rank (Qt) Rank (wxWidgets) Portability and Compatibility Yes 4 5 Compilers Integration VC++, Eclipse No Only libs and making project files GUI designer Third-party Documents Excellent Official book Samples Forum Forum / wxWiki 3

Maintainability development Summary of Evaluation Qt 4.7 wxWidgets 2.9.1 Priority of Criteria Rank (Qt) Rank (wxWidgets) Maintainability development stability Excellent Good 3 5 4 Ease of use Less codes Less complex More codes A bit complex 1 Support (Commercial) Yes Email Customer Portal 2,000$ - 5,000$/yr Yes (Third-party) TT-solutions Email/phone/Skype 100€/hour 2 License Pricing (12 months) LGPL GPL Commercial 2,300$ – 3,700$ LGPL and User's own terms (binary)

Summary of Evaluation 3 5 1 4 Additional framework features: Qt 4.7 wxWidgets 2.9.1 Priority of Criteria Rank (Qt) Rank (wxWidgets) XML Yes 3 5 Multimedia 1 4 Multithreading Standard C++ New keywords added e.g. Public slot: Uses Macros a lot e.g. for main()

Total Scores (out of 5) Qt: 4.74 wxWidgets: 4.18 We recommend using Qt to facilitate the development of 3D game tools.

Major Users and Applications wxWidgets : 3D games / apps: Unreal Game Engine 3 (Price: +1 million USD) Shark 3D for games Other apps: Code::Blocks FileZilla AOL Communicator AMD, Advanced Micro Devices Qt : 3D games / apps: Autodesk Maya 2011 Autodesk Mudbox3D Nextlimit RealFlow Google Earth Other apps: VLC player Skype

Thank you