<- previous    index    next ->

Lecture 1


The purpose of this course is to provide the student both
knowledge and a basic Graphical User Interface, GUI, program
that the student has written and can be expanded into
various applications the student wants to develop.

Building GUI programs is non-trivial yet rewarding.
The student needs to understand the operating system,
the windowing system and "tool kits."

There are many potential employment opportunities for
graduates with computer graphics skills. The film
industry and advertising industry have many types of
positions available. The gaming industry, with some
firms local to the Baltimore area, have various
positions available. Check out Firaxis, Breakaway,
Day 1 Studios, Big Huge Games and others.

Course motto: If it works, use it.
              If not, find another way.

You will be dealing with windowing systems and graphical
libraries that are much larger and more complex than
operating systems. I guarantee they will have bugs.
Your grade depends of finding a way around any bugs.
Your program must work in spite of system/library bugs.

The basic prerequisite for this course is to be able to
write working code in some reasonable programming language.
You will probably be writing 1,000 to 10,000 lines of code
in this course. Do not panic. A lot of code is repetitive.

You are expected to know the software development cycle:

      Edit          <-----------+
           Compile              |
                   Run          |
                       Curse ---+

As an acknowledged expert, Edsger Dijkstra, has stated:
"Top down design and programming is right every time
except the first time." For your rapid learning you
do not want to use the "waterfall model" or even
Barry Boehms "spiral model", but rather use 
"rapid prototyping".

Do not worry about the details, for a while, yet look over
the organization and structure of the same GUI application
written for X Windows Motif, OpenGL and Java.

You will need to make a choice of "platform" for doing
the programming for this course. My lectures will cover:

   Microsoft Windows - OpenGL in C, C++ (same code for Linux and Mac OSX)
                     - Java             (same code every where)

   Linux, Unix       - OpenGL in C, C++ (same code  MS Windows)
                     - Java             (same code every where)
                     - X Windows Motif  (same code for Mac OSX)

   Mac OSX           - OpenGL in C, C++ (same code for MS Windows and Linux)
                     - Java             (same code every where)
                     - X Windows Motif  (same code for Linux, Unix)

      On Microsoft Windows you need Windows XP and Microsoft
      Visual Studio installed in order to use OpenGL.
      (In past, buy from UMBC bookstore at very low price.
       now may be download free or see instructor.))
      You will need OpenGL Utility Toolkit, GLUT, also.
      On Microsoft Windows you need Java 1.5 or later installed
      (Download from internet.)

      On Linux, Unix gnu compilers should be available. Install
      OpenGL (called Mesa) if not already available.
      You will need OpenGL Utility Toolkit, GLUT, also.
      On Linux, Unix you need Java 1.5 or later installed.
      On Linux, Unix you need Motif (called Lesstif or OpenMotif) installed.
      (UMBC linux.gl.umbc.edu has all software installed with the
       possible exception of GLUT. For your computer - download from
       the internet.)

      On Mac the underlying operating system is Unix. Thus you can
      download X windows, OpenGL, GLUT, Motif and other software if
      it is not already installed. You may also use the Mac IDE.

      Java has two execution models. "Frame" makes standard applications
      that run in a standard window on all platforms. "App" or applet is
      much more restrictive and must run in a WEB browser or appletviewer.



GUI Human factors: Make sure it is obvious to the user of your
                   application how to quit, exit, kill or stop.


Just a quick look at some sample code.
See which will run on your development system

  w1.c basic X windows

  w1.jpg - screen

  w1gl.c - w1.c in OpenGL

  w1gl.jpg - screen

  W1frame.java - w1.c in Java

  W1frame.jpg - screen

  W1app.java - W1frame as an applet

Note that:
w1.c, the basic X Windows GUI application can be compiled
      and executed on all Unix based operating systems,
      including MacOS X

w1gl.c, the OpenGL GUI application can be compiled
        and executed on almost all operating systems
        that provide windowing (All forms of Unix,
        MacOS and Microsoft Windows, etc.)

W1frame.java, the Java GUI application can be compiled
              and run on any system that has Java
              J2SE 1.4.2 or later available.

W1app.java, the Java GUI application can be compiled
              on any system that has Java J2SE 1.4.2 or
              later available. Then run in almost any
              WEB browser. But, the user may not have
              Java applets enabled. There are also some
              severe restrictions on applets.

Other demonstrations of sample applications may include:

split_cube - visualization, color, movement, inside
teapots - lighting
planets - lighting and glowing 1
sky_fly - terrain
pilot - do your own flight simulator
springgl - education
spring2gl - build on previous applications
alpha_fade - scene transitions using fading
earth - texture map pictures onto objects
gears4 - modeling
tenseggl - modeling user controls viewing
light_dat - skull, more modeling

draw - default object oriented graphics (digital logic added)
pairs2 - card game
hull_draw - modeling boat hull
mover - independent window control
fractal.c    - create scenes (art vs composition)
fractalgl.c  - create scenes (art vs composition)
Fractal.java - create scenes (art vs composition)

Now, you need to set up your system for GUI programming.

linux.gl.umbc.edu has everything for Linux X Windows,
OpenGL and java. You may have to download software or
set up links or change directory names on your Linux
or Unix system.

Microsoft Windows needs to have Microsoft Visual Studio to
be able to compile programs for OpenGL. There are many
versions of Microsoft Visual Studio and thus they are
not covered in this course. The essential component is
"cl.exe" the C and C++ compiler that can be used from
a standard command prompt. If you use Visual Studio
be sure you turn off preference "precompiled header files".

Mac OSX, use either the Mac IDE or download the X environment.

More information is in getting started

That said, here are the Linux/Unix/Mac "Makefile" and the
Microsoft Windows "make.bat" files that compile and execute
the source code shown above.


  Makefile1.linux
  Makefile_mac_w1
  make1.bat

In my personal directory, I have some Makefiles and
some  make.bat  files that includes all commands to make
most programs in that directory. 
A start of my Makefile and make.bat is shown above.

An option to  make.bat is to use  nmake  on Microsoft Windows.
(This is an optional exercise for the student.)
Or, use an IDE such as Visual Studio, Eclipse, etc. etc.

    <- previous    index    next ->

Other links

Go to top