ROOT Team Meeting October 1 st 2010 GUI thinking and testing ideas OpenGL GUI Root Team meeting 01/10/2010.

Slides:



Advertisements
Similar presentations
1. Reasons for logging on as a root •Most people are familiar with Windows systems with regard to administrative privileges. Many user running windows.
Advertisements

Chapter 2: Graphics Programming
FireMonkey Deep Dive The Next Generation of Business Application Development.
CS 4731 Lecture 2: Intro to 2D, 3D, OpenGL and GLUT (Part I) Emmanuel Agu.
What is OpenGL? Low level 2D and 3D Graphics Library Competitor to Direct3D (the rendering part of DirectX) Used in: CAD, virtual reality, scientific.
Graphics Programming. In this class, we will cover: The difference between AWT and Swing Creating a frame Frame positioning Displaying information in.
Painterly Rendering CMPS Assignment 2. OpenGL OpenGL is a cross-language, cross- platform specification defining and API for 2D and 3D graphics.
3D Graphics - Current Technologies Open GLOpen GL (Open Graphics Language) –SGI Silicon Graphics Direct 3DDirect 3D –Microsoft Direct X Technology Java3DJava3D.
Introduction to OpenGL. What is OpenGL OpenGL is a low-level software interface to graphics hardware No commands for performing windowing tasks or obtaining.
AGD: 5. Game Arch.1 Objective o to discuss some of the main game architecture elements, rendering, and the game loop Animation and Games Development.
A GUIDE TO SHAREPOINT 2007 CUSTOMIZATION OPTIONS Heather Solomon, WSS MVP.
Plans for the coming releases. GUI/Win32/OpenGL Finalize/consolidate event recorder Consolidate TBrowser (e.g. browsing ROOT classes) and make it default.
1 Lecture 3: Overview of UI Software and Tools Brad Myers Advanced User Interface Software.
COM 205 Multimedia Applications
GAO YUAN We are here for:  We know iPhone from iOS Human Interface Guidelines  The guidelines and principles that help you.
CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU Department of Computer Science, Stony.
Lecture 7: Objects and Interaction 1  Principles of Interactive Graphics  CMSCD2012  Dr David England, Room 718,  ex 2271 
Programming in OpenGL Ryan Holmes CSE 570 February 12 th, 2003.
SOFTWARE.
Basic OpenGL Glenn G. Chappell U. of Alaska Fairbanks CS 381 Lecture Notes Wednesday, September 10, 2003.
Bertrand Bellenot ROOT Users Workshop Mar ROOT GUI Builder Status & Plans ROOT & External GUI World MFC, FOX, Qt, PVSS… Snapshot of the Future.
DEVSView: A DEVS Visualization Tool Wilson Venhola.
UniS CS297 Graphics with Java and OpenGL Introduction.
An Introduction to Software Architecture
Introduction to OpenGL and GLUT GLUT. What is OpenGL? An application programming interface (API) A (low-level) Graphics rendering API Generate high-quality.
C O M P U T E R G R A P H I C S Jie chen Computer graphic -- OpenGL Howto.
Graphics Programming using OpenGL. OpenGL is a software interface that allows the programmer to create 2D and 3D graphics images. This interface consists.
GUIs for Applets Introduction Applets and Swing/JFC Alternatives to Swing Look-and-Feel issues Example applet graphical user interfaces.
School of Computer Science University of Seoul. 1. Interaction 2. Input Devices 3. Clients and Servers 4. Display Lists 5. Programming Event-Driven Input.
OpenGl Graphics Programming. Introduction OpenGL is a low-level graphics library specification. It makes available to the programmer a small set of geomteric.
Comp371 Computer Graphics Lecturer : Dr. Adam Krzyzak Mehdi Saeidian-manesh
Computer Graphics, KKU. Lecture 101 Introduction to OpenGL.
Implementation support z programming tools y levels of services for programmers z windowing systems y core support for separate and simultaneous user-system.
Object Oriented Software Development 9. Creating Graphical User Interfaces.
Ch 2 Graphics Programming page 1 CSC 367 Coordinate Systems (2.1.2) Device coordinates, or screen coordinates (pixels) put limitations on programmers and.
Building X Window GUIs with Motif The X Window System: Architecture Applications Sample code Review function (as time permits) … Introduce what it’s like.
Objectives of This Session
Introduction to OpenGL Programming Jian-Liang Lin 2002.
Python Programming Graphical User Interfaces Saad Bani Mohammad Department of Computer Science Al al-Bayt University 1 st 2011/2012.
Computing Science 1P Lecture 17: Friday 23 rd February Simon Gay Department of Computing Science University of Glasgow 2006/07.
CSCE 121: Introduction to Program Design and Concepts, Honors Dr. J. Michael Moore Spring 2015 Set 15: GUIs 1.
CPSC 453 Tutorial Xin Liu Sep 23, OpenGL An open standard of rendering pipeline A software interface to graphics hardware A useful set of APIs for.
© Copyright 2012 by Pearson Education, Inc. All Rights Reserved. Chapter 9 GUI Programming Using Tkinter 1.
ROOT’s graphics on iOS. ROOT’s graphics (general scheme):
Introduction to OpenGL and GLUT. What’s OpenGL? An Application Programming Interface (API) A low-level graphics programming API – Contains over 250 functions.
Build-A-Button Glenn G. Chappell U. of Alaska Fairbanks CS 381 Lecture Notes Wednesday, October 8, 2003.
Computer Graphics: Programming, Problem Solving, and Visual Communication Steve Cunningham California State University Stanislaus and Grinnell College.
06/13/2001Dmitry Litvintsev CDF Event Display Dmitry Litvintsev, Fermilab CDF Collaboration Introduction Elements of CDF Run II Event.
NoufNaief.net TA: Nouf Al-harbi.
3D graphics in Erlang Jakob Cederlund -
Computer Graphics Lab 1 OpenGL.
LCG AA Meeting 31 October 2007 The new dynamically and extensively customizable ROOT browser Bertrand Bellenot.
System Software (1) The Operating System
Computer Graphics (Fall 2003) COMS 4160, Lecture 5: OpenGL 1 Ravi Ramamoorthi Many slides courtesy Greg Humphreys.
BlenderPocket How Blender bring CG in Mobile Devices by Salvatore Russo (russose) Blender Conference (21/10/2006)
System SOFTWARE.
Allows the user and the computer to communicate with each other.
Dependency GRAPH ANALYZER
Support for the Development of Interactive Systems
GUI plans of work Revisit (reimplement) a new TreeViewer, possibly based on something like Viewpoints (see next slide) (
Goals Give student some idea what this class is about
Java Look-and-Feel Design Guidelines
OpenGL: (for DEV may be…)
Outline Announcements Dynamic Libraries HWII on web, due Friday
An Introduction to Software Architecture
The Basic Usage and The Event Handling in Glade.
LING 408/508: Computational Techniques for Linguists
Implementation support
Human-computer interaction
Implementation support
Presentation transcript:

ROOT Team Meeting October 1 st 2010 GUI thinking and testing ideas OpenGL GUI Root Team meeting 01/10/2010

ROOT Team meeting October 1 st 2010 Introduction Implementing TVirtualX with OpenGL could allow a better portability and could probably allow to quickly port it on new platforms (e.g. Native Mac OSX) or even small devices (e.g. iPhone, iPad, Android,...). 2

ROOT Team meeting October 1 st 2010 Reminder: OpenGL Quoting OpenGL Red Book: "OpenGL is designed as a streamlined, hardware-independent interface to be implemented on many different hardware platforms. To achieve these qualities, no commands for performing windowing tasks or obtaining user input are included in OpenGL; instead, you must work through whatever windowing system controls the particular hardware you're using." Quoting MSDN: "An OpenGL application with Windows uses either the windowing system of the target platform (X Windows or Windows), or a cross-platform library such as the OpenGL Graphics Library Utility Kit (GLUT)…" 3

ROOT Team meeting October 1 st 2010 GLUT OpenGL Utility Toolkit. It supports, among others: Multiple windows for OpenGL rendering Callback driven event processing Support for bitmap and stroke fonts Miscellaneous window management functions …. But, as specified on the OpenGL web page ( 4 GLUT is designed for constructing small to medium sized OpenGL programs. While GLUT is well-suited to learning OpenGL and developing simple OpenGL applications, GLUT is not a full-featured toolkit so large applications requiring sophisticated user interfaces are better off using native window system toolkits. GLUT is simple, easy, and small. Quick implementation of TVirtualX based on GLUT: It works!

ROOT Team meeting October 1 st 2010 Examples 5 Gui.Backend: native

ROOT Team meeting October 1 st 2010 Examples 6 Gui.Backend: glut

ROOT Team meeting October 1 st 2010 Examples 7

ROOT Team meeting October 1 st 2010 Issues Major drawback: glut creates one Window and its GL Context per widget! This implies a lot of context switching when drawing / updating each GUI element (see next slide) Glut has its own main event loop Some events are missing (e.g. enter/leave mouse event on Windows) Vents are not propagated across sub-windows (e.g. the canvas menu doesn't work) No real font (e.g. FTGL) support, only fixed (hard-coded) font No image support 8

ROOT Team meeting October 1 st 2010 Issues Performance issue (probably due to context switching – to be investigated): Comparing with the native (win32) one: So they are right, GLUT is not a full-featured toolkit... 9 root [2] new TCanvas (class TCanvas*)0x Real time 0:00: , CP time root [2] new TCanvas (class TCanvas*)0x34ba5e0 Real time 0:00: , CP time 0.218

ROOT Team meeting October 1 st 2010 Other options Using an already existing toolkit is difficult, since we have to: Use a X11 (Xlib) like API (TVirtualX is almost a one to one bridge to xlib) Be backward compatible with the ROOT GUI Existing packages have been designed and optimized to be used with OpenGL 10

ROOT Team meeting October 1 st 2010 What Next If glut is really not an option, and if there is no alternative (i.e. no other toolkit), then start from scratch and implement a full Window manager in OpenGL, including: Window management, with their relationship (parent/children) and their properties, keeping also the z-order Graphics Context (GC) management Pixmap management (conversion to OpenGL textures for rendering) Font management (using FTGL) – how to get font properties? Event handling mechanism with proper propagation among windows The platform (WM) dependent part being only the creation of the top level Windows (containers) and the event handling 11