Chapter 7. Introducing Java 3D

Total Page:16

File Type:pdf, Size:1020Kb

Chapter 7. Introducing Java 3D Java Prog. Techniques for Games. Chapter 7. Java 3D Intro. Draft #1 (22nd July '04) Chapter 7. Introducing Java 3D The next fifteen or so chapters will be about 3D games programming using Java 3D, Java's scene graph API which can run on top of OpenGL or DirectX. I'll summarise the main elements of Java 3D, leaving program examples aside for the moment. Then, as in chapter 00, I'll examine Java 3D's suitability for games programming by considering the main criticisms leveled against it. There's been an explosion in alternative ways of programming in 3D with Java. I'll list the main ones under the headings of Java bindings for OpenGL, scene graph APIs, and game engine bindings. 1. Java 3D The Java 3D API provides a collection of high-level constructs for creating, rendering, and manipulating a 3D scene graph composed of geometry, materials lights, sounds, and more. Java 3D was developed by Sun Microsystems, and the most recent stable release is version 1.3.1. (There is a version 1.3.2, but it's a bug fix release which is still under review as I write this in July 2004.) In June 2004, Java 3D became a Sun community project, which allows external developers to submit modifications and new features. There are two Java 3D variants: one implemented on top of OpenGL, the other above DirectX Graphics. The low-level API handles the native rendering at the vertex and pixel levels, while the 3D scene, application logic, and scene interactions are carried out by Java code. This dual approach encourages application portability, hardware independence, and high-speed rendering. Intended application areas include visualization, CAD/CAM, virtual reality, simulation, and gaming. Java 3D 1.3.1. can be downloaded from http://java.sun.com/products/java-media/3D/, together with ample documentation and a long tutorial. 1.1. The Scene Graph Java 3D’s scene graph is a directed acyclic graph (a DAG), so there's a parent-child relationship between most of its nodes, and the graph doesn't contain loops. It is possible for nodes to be shared in a graph, for example to duplicate geometry details. 1 Andrew Davison 2004 Java Prog. Techniques for Games. Chapter 7. Java 3D Intro. Draft #1 (22nd July '04) A simplified scene graph for an office is shown in Figure 1. The office group contains nodes for a desk and two chairs. Each node utilizes shape and colour node components, and the chair shape information is shared. Figure 1. Scene Graph for an Office. The choice of symbols in Figure 1 comes from Figure 2. Figure 2. Scene Graph Symbols. A shape node employs Shape3D (or its subclasses) as a container for Geometry and Appearance node components. The main geometry class is GeometryArray, used for drawing points, lines, and polygons. There are many Appearance subclasses, including ones for colour, texture, and transparency. Environment nodes handle environmental concerns, such as lighting, sound, and behaviours that change the virtual world. Group nodes are containers for other groups or leaf nodes. Leaf nodes are usually shape or environmental nodes. The Group class supports node positioning and orientation for its children, and is subclassed in various ways. For instance, 2 Andrew Davison 2004 Java Prog. Techniques for Games. Chapter 7. Java 3D Intro. Draft #1 (22nd July '04) BranchGroup allows children to be added or removed from the graph at run time, while TransformGroup permits the position and orientation of its children to be changed. The standard first example for Java 3D programmers is HelloUniverse (it appears in chapter 1 of the tutorial). It displays a rotating coloured cube, as in Figure 3. Figure 3. A Rotating Coloured Cube. The scene graph for this application is given in Figure 4. Figure 4. Scene Graph for HelloUniverse. VirtualUniverse is the top node in every scene graph, and represents the virtual world space and its coordinate system. Locale acts as the scene graph's location in the virtual world. 3 Andrew Davison 2004 Java Prog. Techniques for Games. Chapter 7. Java 3D Intro. Draft #1 (22nd July '04) Below the Locale node there are always two subgraphs – the left branch is the content branch graph, holding program-specific content such as geometry, lighting, textures, and the background. The content branch graph differs significantly from one application to another. The ColorCube is composed from a Shape3D node and associated geometry and appearance components. Its rotation is carried out by a Behavior node which affects the TransformGroup parent of the ColorCube's shape. The right hand branch below Locale is the view branch graph, and specifies the user’s position, orientation, and perspective as they look into the virtual world from the physical world (e.g. from in front of a monitor). The ViewPlatform node holds the viewer’s position in the virtual world; the View node states how to turn what the viewer sees into a physical world image (e.g. a 2D picture on the monitor). The Canvas3D node is a Java GUI component that allows the 2D image to be placed inside a Java application or applet. The VirtualUniverse, Locale, and view branch graph often have the same structure across different applications, since most programs use a single Locale and view the virtual world through a 2D image on a monitor. For these applications, the relevant nodes can be created with Java 3D's SimpleUniverse utility class, relieving the programmer of a lot of graph construction work. 2. Java 3D Strengths The Scene Graph. Java 3D’s scene graph makes programming much easier for novices (and even for experienced programmers) because it emphasizes scene design rather than rendering, by hiding the underlying graphics pipeline. A scene graph naturally supports complex graphical elements such as 3D geometries, behaviours, lighting modes, picking, and collision detection. At the Java 3D implementation level, the scene graph can be used to group shapes with common properties, carry out view culling, occlusion culling, level of detail selection, execution culling, and behaviour pruning – all optimizations which must be coded directly by the programmer in lower-level APIs. Java 3D utilizes Java’s multithreading to carry out parallel graph traversal and rendering, both very useful optimizations. Performance. Java 3D is designed with performance in mind, which it achieves at the high-level by scene graph optimizations, and at the low-level by being built on top of OpenGL or DirectX. Some programmer-specified scene graph optimizations are available through capability bits, which state what operations can/cannot be carried out at run time (e.g. prohibiting a shape from moving). Java 3D also permits the programmer to bypass the scene graph, either totally by means of an immediate mode, or partially by using a combination of immediate and retained modes (called mixed mode). Immediate mode gives the programmer greater control over rendering and scene management. Novel Features. Java 3D’s view model separates the virtual and physical worlds (through the ViewPlatform and View nodes). This makes it straightforward to 4 Andrew Davison 2004 Java Prog. Techniques for Games. Chapter 7. Java 3D Intro. Draft #1 (22nd July '04) reconfigure an application to utilize a range of output device, from a monitor, to stereo glasses, to CAVES. Virtual world behaviour is coded with Behaviour nodes in the scene graph, and triggered by events. Among other things, this offers a different style of animation based on responding to events, instead of the usual update-redraw cycle. The core Java 3D API package, javax.media.j3d, supports basic polygons and triangles within a scene graph, while the com.sun.j3d packages add a range of utility classes including ColorCube and SimpleUniverse, mouse and keyboard navigation behaviours, audio device handling, and loaders for several 3D file formats. Geometry compression is possible, often reducing size by an order of magnitude. When this is combined with Java’s NIO and networking, it facilitates the ready transfer of large quantities of data between applications such as multiplayer games. Java 3D allows 2D and 3D audio output, ambient and spatialized sound. Unfortunately, there are bugs in the sound system. In the long term, it will probably be replaced by JOAL, a Java binding for a 3D audio API called OpenAL which is supported in hardware on many sound cards. Java Integration. Java 3D is Java, so offers object orientation (classes, inheritance, polymorphism), threads, exception handling, and more. Java 3D can easily make use of other Java APIs, such as JMF and JAI. Portability. Java 3D’s implementation in Java and OpenGL or DirectX gives it a high degree of portability, with related advantages such as reduced development time and cost. Documentation and Examples. The Java 3D distribution comes with about 40 small- to-medium examples. They are a great help, but somewhat lacking in documentation. Some of them need rewriting to use more recent features of Java 3D and the utility classes. The Java 3D tutorial is available online at http://java.sun.com/products/java- media/3D/collateral/. The tutorial is a good introduction to Java 3D but sometimes rather confusing for beginners. I recommend two Java 3D textbooks: • Java 3D API Jump-Start Aaron E. Walsh, Doug Gehringer Prentice Hall, 2001 ISBN: 0-1303-4076-6 http://vig.prenhall.com:8081/catalog/academic/product/0,1144,0130340766,00.ht ml • Java 3D Programming Daniel Selman Manning Pub, 2002 ISBN: 1-9301-1035-9 http://www.manning.com/selman/ 5 Andrew Davison 2004 Java Prog. Techniques for Games. Chapter 7. Java 3D Intro. Draft #1 (22nd July '04) The Walsh and Gehringer text is an excellent overview, using code snippets rather than page after page of listings.
Recommended publications
  • View Full Resumé
    Aspiration My dream job will allow me to apply a combination of my design and technical skills to create outstanding consumer software for a company that is deeply committed to their product and users. I desire to work in an environment where landing an icon on whole pixels matters, where the text written for an alert view is thoughtful, where design is a fundamental part of the philosophy, and where I can learn from and be inspired by the talented people I work with. Experience Getaround Jun 2013 – Present www.getaround.com Sr. Software Engineer Lead software engineer for Getaround’s iOS app, facilitating on-demand car rental services. Since joining I have refactored the client-side API to use a modern block- based design and taken on efforts to redesign the app user-experience for iOS 7. SeatMe, Inc. Jul 2012 – Jun 2013 Bryan www.seatme.com Sr. Software Engineer & UX Designer Hansen Engineering for a front-of-house restaurant solution on the iPad allowing real-time guest and operations management with server-side sync. Contribution of key new Cocoa Developer & features and refactorization of core components to increase stability and performance. Interaction Designer UX and prototyping on iOS to support future business directives. email bryanehansen@gmail.com Bitswift Oct 2011 – Apr 2012 portfolio skeuo.com Cofounder phone 970.214.3842 Product development and design of an advanced design tool for the Mac platform, facilitating the creation of user flows for mobile applications. My responsibilities twitter @skeuo included product direction, development and UX wireframe design. Übermind, Inc. Mar 2006 – Sep 2011 www.ubermind.com Director of UX My project involvement with Übermind has been diverse, encompassing mobile apps for iOS and Android, consumer applications for the Mac and back-end enterprise systems.
    [Show full text]
  • Intro to Opengl
    Intro to OpenGL CS4620 Lecture 14 Guest Instructor: Nicolas Savva What is OpenGL? ● Open Graphics Library ● A low level API for 2D/3D rendering with the Graphics Hardware (GPU) ● Cross-platform (Windows, OS X, Linux, iOS, Android, ...) ● Developed by SGI in 1992 – 2014: OpenGL 4.5 – 2008: OpenGL 3.0 – 2006: OpenGL 2.1 ● Main alternative: DirectX/3D Cornell CS4620 Fall 2015 How does it fit in? ● Tap massive power of GPU hardware to render images ● Use GPU without caring about the exact details of the hardware Cornell CS4620 Fall 2015 CPU and GPU memory CPU BUS GPU SHADERS B B U U S S B U S F GPU MEMORY B SYSTEM MEMORY Display Cornell CS4620 Fall 2015 What OpenGL does for us ● Controls GPU ● Lets user specify resources...: – Geometry (vertices and primitives) – Textures – Shaders (programmable pieces of rendering pipeline) – Etc. ● ...and use them: – Rasterize and draw geometry Cornell CS4620 Fall 2015 How we will use OpenGL ● OpenGL version – We use 2.x-3.x (plus extensions) – Code avoids older, deprecated parts of OpenGL standard ● LWJGL – Lightweight Java Game Library – Java bindings for OpenGL API ● CS 4620/4621 Framework – Simplifies creating and using OpenGL resources Cornell CS4620 Fall 2015 LWJGL ● OpenGL originally written for C. ● LWJGL contains OpenGL binding for Java www.lwjgl.org/ ● Gives Java interface to C OpenGL commands ● Manages framebuffer (framebuffer: a buffer that holds the image that is displayed on the monitor) Cornell CS4620 Fall 2015 MainGame ● A window which can display GameScreens ● Initializes OpenGL context
    [Show full text]
  • V1.0 PDF Manual
    Anim8or® User Guide Version 1.00 29-May-17 R. Steven Glanville © 1999 - 2017 R. Steven Glanville. All rights reserved. http://www.anim8or.com Table Of Contents Introduction 9 What's New in v1.0 10 User Interface 10 Modeling 10 Animation 11 Basics 12 Mouse Usage 12 Keyboard Shortcuts 12 Undo and Redo 12 Tool Tips 13 Toolbars and Menus 13 Common Button Meanings 13 Top Toolbar 15 Arc Rotate 16 Editing Widgets 16 Grid Control 17 Material Editor 17 Anim8or Object Libraries 18 Visual Quality 18 OpenGL Workspace 19 File Output 20 User Attributes 20 Printing 20 Auto Save 20 Configuration 21 Version 1.00 29-May-17 2 © 1999 - 2017 R. Steven Glanville Table Of Contents User Interface Configuration 22 Object Editor - Basics & Object/Edit Mode 24 Object/Edit Tools 25 Basic Objects 25 Mesh vs. Parametric Components 27 Object Materials 28 Plug-in Shapes 28 Splines 29 True Type Fonts 29 Extrusion 30 Lathing 31 Modifiers 32 Mirror Image 33 Morph Targets 34 Continuously Mirrored Meshes 35 Reference Image 35 Object Editor - Object/Point Mode 37 Object/Point Operations 37 Point Editing 37 Edge Editing 38 Face Editing 39 Applying Multiple Materials 39 A Note on Selecting Faces 40 Adding Points and Edges 40 Adding Faces 41 Connecting Meshes 41 Merging Points 42 Version 1.00 29-May-17 3 © 1999 - 2017 R. Steven Glanville Table Of Contents Connecting Meshes (2) 42 Connecting Meshes (3) 42 Point and Line Parameters 43 Face Extrusion and Manipulation Tools 43 Topographical Knife 46 Face Editing Commands 47 Miscellaneous Commands 49 Selection Commands 49 Editing Commands 49 Figure Editor 51 Figure Basics 52 Figure/Edit Operations 52 Visibility 54 Building a Skeleton 55 Flexible Joints 56 Adding Body Parts 57 Skinning 57 Influence Volumes 58 Skinning Weights 59 Sequence Editor 61 Time Track 61 Scrubber Bar 62 Sequence Basics 62 Edit Operations 63 Visibility Options 63 Animate Button 64 What is a Key? 64 Version 1.00 29-May-17 4 © 1999 - 2017 R.
    [Show full text]
  • Visualization and Geometric Interpretation of 3D Surfaces Donya Ghafourzadeh
    LiU-ITN-TEK-A-13/011-SE Visualization and Geometric Interpretation of 3D Surfaces Donya Ghafourzadeh 2013-04-30 Department of Science and Technology Institutionen för teknik och naturvetenskap Linköping University Linköpings universitet nedewS ,gnipökrroN 47 106-ES 47 ,gnipökrroN nedewS 106 47 gnipökrroN LiU-ITN-TEK-A-13/011-SE Visualization and Geometric Interpretation of 3D Surfaces Examensarbete utfört i Medieteknik vid Tekniska högskolan vid Linköpings universitet Donya Ghafourzadeh Handledare George Baravdish Examinator Sasan Gooran Norrköping 2013-04-30 Upphovsrätt Detta dokument hålls tillgängligt på Internet – eller dess framtida ersättare – under en längre tid från publiceringsdatum under förutsättning att inga extra- ordinära omständigheter uppstår. Tillgång till dokumentet innebär tillstånd för var och en att läsa, ladda ner, skriva ut enstaka kopior för enskilt bruk och att använda det oförändrat för ickekommersiell forskning och för undervisning. Överföring av upphovsrätten vid en senare tidpunkt kan inte upphäva detta tillstånd. All annan användning av dokumentet kräver upphovsmannens medgivande. För att garantera äktheten, säkerheten och tillgängligheten finns det lösningar av teknisk och administrativ art. Upphovsmannens ideella rätt innefattar rätt att bli nämnd som upphovsman i den omfattning som god sed kräver vid användning av dokumentet på ovan beskrivna sätt samt skydd mot att dokumentet ändras eller presenteras i sådan form eller i sådant sammanhang som är kränkande för upphovsmannens litterära eller konstnärliga anseende eller egenart. För ytterligare information om Linköping University Electronic Press se förlagets hemsida http://www.ep.liu.se/ Copyright The publishers will keep this document online on the Internet - or its possible replacement - for a considerable time from the date of publication barring exceptional circumstances.
    [Show full text]
  • An Opengl-Based Eclipse Plug-In for Visual Debugging
    An OpenGL-based Eclipse Plug-in for Visual Debugging André Riboira Rui Abreu Rui Rodrigues Department of Informatics Engineering University of Porto Portugal {andre.riboira, rma, rui.rodrigues}@fe.up.pt ABSTRACT A traditional approach to fault localization is to insert Locating components which are responsible for observed fail- print statements in the program to generate additional de- ures is the most expensive, error-prone phase in the software bugging information to help identifying the root cause of development life cycle. Automated diagnosis of software the observed failure. Essentially, the developer adds these faults (aka bugs) can improve the efficiency of the debug- statements to the program to get a glimpse of the runtime ging process, and is therefore an important process for the state, variable values, or to verify that the execution has development of dependable software. Although the output reached a particular part of the program. Another com- of current automatic fault localization techniques is deemed mon technique is the use of a symbolic debugger which sup- to be useful, the debugging potential has been limited by ports additional features such as breakpoints, single step- the lack of a visualization tool that provides intuitive feed- ping, and state modifying. Examples of symbolic debuggers back about the defect distribution over the code base, and are GDB [15], DBX [6], DDD [18], Exdams [4], and the easy access to the faulty locations. To help unleash that po- debugger proposed by Agrawal, Demillo, and Spafford [3]. tential, we present an OpenGL-based Eclipse plug-in that Symbolic debuggers are included in many integrated devel- opment environments (IDE) such as Eclipse2, Microsoft Vi- explores two visualization techniques - viz.
    [Show full text]
  • A Survey of Technologies for Building Collaborative Virtual Environments
    The International Journal of Virtual Reality, 2009, 8(1):53-66 53 A Survey of Technologies for Building Collaborative Virtual Environments Timothy E. Wright and Greg Madey Department of Computer Science & Engineering, University of Notre Dame, United States Whereas desktop virtual reality (desktop-VR) typically uses Abstract—What viable technologies exist to enable the nothing more than a keyboard, mouse, and monitor, a Cave development of so-called desktop virtual reality (desktop-VR) Automated Virtual Environment (CAVE) might include several applications? Specifically, which of these are active and capable display walls, video projectors, a haptic input device (e.g., a of helping us to engineer a collaborative, virtual environment “wand” to provide touch capabilities), and multidimensional (CVE)? A review of the literature and numerous project websites indicates an array of both overlapping and disparate approaches sound. The computing platforms to drive these systems also to this problem. In this paper, we review and perform a risk differ: desktop-VR requires a workstation-class computer, assessment of 16 prominent desktop-VR technologies (some mainstream OS, and VR libraries, while a CAVE often runs on building-blocks, some entire platforms) in an effort to determine a multi-node cluster of servers with specialized VR libraries the most efficacious tool or tools for constructing a CVE. and drivers. At first, this may seem reasonable: different levels of immersion require different hardware and software. Index Terms—Collaborative Virtual Environment, Desktop However, the same problems are being solved by both the Virtual Reality, VRML, X3D. desktop-VR and CAVE systems, with specific issues including the management and display of a three dimensional I.
    [Show full text]
  • Introduction to Opengl
    INTRODUCTION TO OPENGL Pramook Khungurn CS4620, Fall 2012 What is OpenGL? • Open Graphics Library • Low level API for 2D/3D rendering with GPU • For interactive applications • Developed by SGI in 1992 • 2009: OpenGL 3.2 • 2010: OpenGL 4.0 • 2011: OpenGL 4.2 • Competitor: Direct3D OpenGL 2.x vs OpenGL 3.x • We’ll teach you 2.x. • Since 3.x, a lot of features of 2.x have been deprecated. • Becoming more similar to DirectX • Deprecated features are not removed. • You can still use them! • Why? • Backward compatibility: Mac cannot fully use 3.x yet. • Pedagogy. Where does it work? What OpenGL Does • Control GPU to draw simple polygons. • Utilize graphics pipeline. • Algorithm GPU uses to create 3D images • Input: Polygons & other information • Output: Image on framebuffer • How: Rasterization • More details in class next week. What OpenGL Doesn’t Do • Manage UI • Manage windows • Decide where on screen to draw. • It’s your job to tell OpenGL that. • Draw curves or curved surfaces • Although can approximate them by fine polygons Jargon • Bitplane • Memory that holds 1 bit of info for each pixel • Buffer • Group of bitplanes holding some info for each pixel • Framebuffer • A buffer that hold the image that is displayed on the monitor. JOGL Java OpenGL (JOGL) • OpenGL originally written for C. • JOGL = OpenGL binding for Java • http://jogamp.org/jogl/www/ • Gives Java interface to C OpenGL commands. • Manages framebuffer. Demo 1 GLCanvas • UI component • Can display images created by OpenGL. • OpenGL “context” • Stores OpenGL states. • Provides a default framebuffer to draw. • Todo: • Create and stick it to a window.
    [Show full text]
  • 3D Computer Graphics Compiled By: H
    animation Charge-coupled device Charts on SO(3) chemistry chirality chromatic aberration chrominance Cinema 4D cinematography CinePaint Circle circumference ClanLib Class of the Titans clean room design Clifford algebra Clip Mapping Clipping (computer graphics) Clipping_(computer_graphics) Cocoa (API) CODE V collinear collision detection color color buffer comic book Comm. ACM Command & Conquer: Tiberian series Commutative operation Compact disc Comparison of Direct3D and OpenGL compiler Compiz complement (set theory) complex analysis complex number complex polygon Component Object Model composite pattern compositing Compression artifacts computationReverse computational Catmull-Clark fluid dynamics computational geometry subdivision Computational_geometry computed surface axial tomography Cel-shaded Computed tomography computer animation Computer Aided Design computerCg andprogramming video games Computer animation computer cluster computer display computer file computer game computer games computer generated image computer graphics Computer hardware Computer History Museum Computer keyboard Computer mouse computer program Computer programming computer science computer software computer storage Computer-aided design Computer-aided design#Capabilities computer-aided manufacturing computer-generated imagery concave cone (solid)language Cone tracing Conjugacy_class#Conjugacy_as_group_action Clipmap COLLADA consortium constraints Comparison Constructive solid geometry of continuous Direct3D function contrast ratioand conversion OpenGL between
    [Show full text]
  • Virtual Worlds and Conservational Channel Evolution and Pollutant Transport Systems (Concepts)
    University of Mississippi eGrove Electronic Theses and Dissertations Graduate School 2012 Virtual Worlds and Conservational Channel Evolution and Pollutant Transport Systems (Concepts) Chenchutta Denaye Jackson Follow this and additional works at: https://egrove.olemiss.edu/etd Part of the Computer Engineering Commons Recommended Citation Jackson, Chenchutta Denaye, "Virtual Worlds and Conservational Channel Evolution and Pollutant Transport Systems (Concepts)" (2012). Electronic Theses and Dissertations. 147. https://egrove.olemiss.edu/etd/147 This Dissertation is brought to you for free and open access by the Graduate School at eGrove. It has been accepted for inclusion in Electronic Theses and Dissertations by an authorized administrator of eGrove. For more information, please contact egrove@olemiss.edu. VIRTUAL WORLDS AND CONSERVATIONAL CHANNEL EVOLUTION AND POLLUTANT TRANSPORT SYSTEMS (CONCEPTS) A Dissertation Submitted to the Faculty of the University of Mississippi in partial fulfillment of the requirements for the Degree of Doctor of Philosophy in the School of Engineering The University of Mississippi by CHENCHUTTA DENAYE CROSS JACKSON July 2012 Copyright © 2012 by Chenchutta Cross Jackson All rights reserved ABSTRACT Many models exist that predict channel morphology. Channel morphology is defined as the change in geometric parameters of a river. Channel morphology is affected by many factors. Some of these factors are caused either by man or by nature. To combat the adverse effects that man and nature may cause to a water system, scientists and engineers develop stream rehabilitation plans. Stream rehabilitation as defined by Shields et al., states that “restoration is the return from a degraded ecosystem back to a close approximation of its remaining natural potential” [Shields et al., 2003].
    [Show full text]
  • 3D Graphics for Virtual Desktops Smackdown
    3D Graphics for Virtual Desktops Smackdown 3D Graphics for Virtual Desktops Smackdown Author(s): Shawn Bass, Benny Tritsch and Ruben Spruijt Version: 1.11 Date: May 2014 Page i CONTENTS 1. Introduction ........................................................................ 1 1.1 Objectives .......................................................................... 1 1.2 Intended Audience .............................................................. 1 1.3 Vendor Involvement ............................................................ 2 1.4 Feedback ............................................................................ 2 1.5 Contact .............................................................................. 2 2. About ................................................................................. 4 2.1 About PQR .......................................................................... 4 2.2 Acknowledgements ............................................................. 4 3. Team Remoting Graphics Experts - TeamRGE ....................... 6 4. Quotes ............................................................................... 7 5. Tomorrow’s Workspace ....................................................... 9 5.1 Vendor Matrix, who delivers what ...................................... 18 6. Desktop Virtualization 101 ................................................. 24 6.1 Server Hosted Desktop Virtualization directions ................... 24 6.2 VDcry?! ...........................................................................
    [Show full text]
  • Introduction to Opengl
    433-481 © Pearce 2001 Outline • OpenGL Background and History • Other Graphics Technology •Drawing • Viewing and Transformation • Lighting • JOGL and GLUT • Resources 433-380 Graphics and Computation Introduction to OpenGL Some images in these slides are taken from “The OpenGL Programming Manual”, which is copyright Addison Wesley and the OpenGL Architecture Review Board. http://www.opengl.org/documentation/red_book_1.0/ 2 OpenGL Background and History Other Graphics Technology • OpenGL = Open Graphics Library • Low Level Graphics • Developed at Silicon Graphics (SGI) • OpenGL • Successor to IrisGL • Cross Platform • Scene Graphs, BSPs (Win32, Mac OS X, Unix, Linux) – OpenSceneGraph, Java3D, VRML, • Only does 3D Graphics. No Platform Specifics PLIB (Windowing, Fonts, Input, GUI) • Version 1.4 widely available • DirectX (Direct3D) • Two Libraries – GL (Graphics Library) • Can mix some DirectX with OpenGL (e.g – GLU (Graphics Library Utilities) OpenGL and DirectInput in Quake III) 3 4 Platform Specifics The Drawing Process • Platform Specific OpenGL Interfaces ClearTheScreen(); DrawTheScene(); – Windows (WGL) CompleteDrawing(); – X11 (GLX) SwapBuffers(); – Mac OS X (CGL/AGL/NSOpenGL) – Motif (GLwMwidget) • In animation there are usually two buffers. Drawing usually occurs on the background buffer. When it is complete, it is brought to the – Qt (QGLWidget, QGLContext) front (swapped). This gives a smooth animation without the viewer • Java (JOGL) seeing the actual drawing taking place. Only the final image is viewed. • GLUT (GL Utility Library) • The technique to swap the buffers will depend on which windowing library you are using with OpenGL. 5 6 1 433-481 © Pearce 2001 Clearing the Window Setting the Colour glClearColor(0.0, 0.0, 0.0, 0.0); • Colour is specified in (R,G,B,A) form [Red, Green, Blue, Alpha], with glClear(GL_COLOR_BUFFER_BIT); each value being in the range of 0.0 to 1.0.
    [Show full text]
  • Achieving High and Consistent Rendering Performance of Java AWT/Swing on Multiple Platforms
    SOFTWARE—PRACTICE AND EXPERIENCE Softw. Pract. Exper. 2009; 39:701–736 Published online in Wiley InterScience (www.interscience.wiley.com). DOI: 10.1002/spe.920 Achieving high and consistent rendering performance of Java AWT/Swing on multiple platforms Yi-Hsien Wang and I-Chen Wu∗,† Department of Computer Science, National Chiao Tung University, Hsinchu, Taiwan SUMMARY Wang et al. (Softw. Pract. Exper. 2007; 37(7):727–745) observed a phenomenon of performance incon- sistency in the graphics of Java Abstract Window Toolkit (AWT)/Swing among different Java runtime environments (JREs) on Windows XP. This phenomenon makes it difficult to predict the performance of Java game applications. Therefore, they proposed a portable AWT/Swing architecture, called CYC Window Toolkit (CWT), to provide programmers with high and consistent rendering performance for Java game development among different JREs. They implemented a DirectX version to demonstrate the feasibility of the architecture. This paper extends the above research to other environments in two aspects. First, we evaluate the rendering performance of the original Java AWT with different combi- nations of JREs, image application programming interfaces, system properties and operating systems (OSs), including Windows XP, Windows Vista, Fedora and Mac OS X. The evaluation results indicate that the performance inconsistency of Java AWT also exists among the four OSs, even if the same hardware configuration is used. Second, we design an OpenGL version of CWT, named CWT-GL, to take advantage of modern 3D graphics cards, and compare the rendering performance of CWT with Java AWT/Swing. The results show that CWT-GL achieves more consistent and higher rendering performance in JREs 1.4 to 1.6 on the four OSs.
    [Show full text]