0% found this document useful (0 votes)
71 views

SetupCG Open GL

The document provides instructions for setting up various development environments for OpenGL and JOGL programming on different platforms including Windows, MacOS, and Linux. It discusses installing required libraries and IDEs as well as provides code examples.

Uploaded by

soc11559
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
71 views

SetupCG Open GL

The document provides instructions for setting up various development environments for OpenGL and JOGL programming on different platforms including Windows, MacOS, and Linux. It discusses installing required libraries and IDEs as well as provides code examples.

Uploaded by

soc11559
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 42

Copyright@2011 by Jim X.

Chen:
[email protected]
1
.1.
Professor Jim X. Chen
Department of Computer Science
George Mason University
Fairfax, VA 22030
Copyright@2012 by Jim X. Chen:
[email protected]
2
Setting Up Working Environment
for JOGL
http://www.cs.gmu.edu/~jchen/
graphics/setup.html
Installing a Java IDE
(Eclipse, jGRASP, netbeans, or JBuilder)
Installing JOGL libraries

Windows simplified instructions
Download Eclipse or jGRASP; http://www.eclipse.org/downloads/
Download the examples and unzip them: joglExamples2011 ;
http://www.cs.gmu.edu/~jchen/graphics/setup.html
Download the corresponding libraries that matches your platform:
http://download.java.net/media/jogl/builds/archive/jsr-231-1.1.1a/
They are also at:
http://www.cs.gmu.edu/~jchen/graphics/jogl/notes/jogl-1.1.1a-windows-amd64.zip
http://www.cs.gmu.edu/~jchen/graphics/jogl/notes/jogl-1.1.1a-windows-i586.zip
http://www.cs.gmu.edu/~jchen/graphics/jogl/notes/jogl-1.1.1a-macosx-ppc.zip
http://www.cs.gmu.edu/~jchen/graphics/jogl/notes/jogl-1.1.1a-macosx-universal.zip
Copyright@2012 by Jim X. Chen:
[email protected]
3
Windows simplified instructions
Eclipse
Start Eclipse using a working directory other than the sample programs.
Create a project corresponding to the directory: joglExamples2011.
Under Project->Properties-> (Java Build Path) -> Libraries, you can use
(Add External JARs) to add *.jar (the two file names in the downloaded Jogl
library directory).
Remove the two dead "*.jar" file names if you see them. They are created
when I compile my program under my specific directory.
jGRASP
In the project under "Settings->PATH/CLASSPATH->Workspace", you can
add the directory of the *.dll files to the system PATH window, and add
"*.jar" files with full path to the CLASSPATH window.

Now you can try the examples. They should run from here.
Copyright@2011 by Jim X. Chen:
[email protected]
4
Mac OS
http://www.cs.gmu.edu/~jchen/graphics/jogl/notes/joglSetup.html
1. Download Eclipse;
2. Download Mac OS X: *.jar and *.jnilib (which are packaged in the jar file:
jogl-1.1.1a-macosx-ppc.zip or jogl-1.1.1a-macosx-universal.zip depending on
your platform)
3. Copy all downloaded files into directory /System/Library/Java/Extensions/
4. Download the examples and unzip them: joglExamples2011
5. Start Eclipse, create a project corresponding to the directory:
joglExamples201
6. In eclipse, you can add "*.jar" (the two file names) under "Project-
>Properties->Libraries". Remove the two dead "*.jar" file names if you see
them. They are created when I compile my program under my specific
directory.
7. Try the examples. They should run from here.
Copyright@2012 by Jim X. Chen:
[email protected]
5
Copyright@2011 by Jim X. Chen:
[email protected]
6
On Windows 95, 98, NT system, or 2000
6
Download GLUT GUI library:
http://www.xmission.com/~nate/glut.html
Or http://cs.gmu.edu/~jchen/cs451/notes/glutdlls.zip

to download precompiled glutdlls.zip for Windows 98-XP.
Copyright@2011 by Jim X. Chen:
[email protected]
7
7

1. OpenGL/Glut Configuration Tutorial On Visual C++ 6.0

I assume you have Microsoft Visual C++ installed to the default directory, c:\msdev (For
your system, you may start find tool to find a VC++ file like gl.h, and then determine the
default directory for your system.)

A. Install OpenGL and Glut
Create a temporary directory and extract the glutdlls.zip there. Copy all *.h files to
c:\msdev\include\gl; all *.lib files to c:\msdev\lib; and all *.dll files to
c:\windows\system32.

You are now ready to enter the fun and exciting world of OpenGL and Glut programming!
Copyright@2011 by Jim X. Chen:
[email protected]
8
8
B. Set OpenGL or Glut in Visual C++:

First, make sure that you've included all the necessary *.h files in your program.
You need <GL/glut.h> for Glut; or <GL/gl.h> and <afxwin.h>, and possibly
<GL/glu.h> and/or <GL/glaux.h> for OpenGL.

You need to let Visual C++ know that you want it to consult all the necessary
libraries. To do this, you first need to choose Settings under the Project or Build
menu item. The Settings button will appear after you compile your program once.
Copyright@2011 by Jim X. Chen:
[email protected]
9
9
A Project Settings dialog box will now pop up. You now need to select the Link
tab. Unfortunately, the Link tab may be hidden. Click the half-a-tab circled below...
Copyright@2011 by Jim X. Chen:
[email protected]
10
1
0
...and the Link page will magically appear:
Copyright@2011 by Jim X. Chen:
[email protected]
11
1
1
The Object/library modules section of this page which you should be interested
in is circled in red above. Scroll to the end of this line and add the necessary *.lib
files to the list.
There are four libraries that you might need to add: opengl32.lib, glu32.lib,
glaux.lib, and glut32.lib. Since it doesn't hurt much to have extra libs listed, I
suggest you add all of them.
Copyright@2011 by Jim X. Chen:
[email protected]
12
1
2
C. Compile and run the following program
Source code examples can be downloaded from
ftp://ftp.sgi.com/opengl/opengl12.zip
Or
http://cs.gmu.edu/~jchen/cs451/notes/opengl12.zip
/* Example 1.1.point.c: draw multiple randomly generated points */
// by Jim X. Chen; September 2000


Points Points.c
Copyright@2011 by Jim X. Chen:
[email protected]
13
1. Extract the glutdlls.zip
Copy all *.h files to C:\Program Files\Microsoft Visual Studio .NET
2003\Vc7\include\gl\; (if gl directory is not exist, create one); all *.lib files
to C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib; and all *.dll
files to c:\windows\system32.
2. Start Visual Studio
Under the file menu select New Project
In the New Project Window, select Visual C++ Projects on the left
hand side and select Win32 console project on the right hand side
Specify name and location of the project
In the Win32 Application Wizard Window , select the Application
Settings; then click Empty Project
Copyright@2011 by Jim X. Chen:
[email protected]
14
Now the project is open; right click on the Source Files folder (on
the right); select Add Add New Item C++ file
Name the file, and copy whatever code to this file, and run.
2. To build and run your project, hit F5
3. Point Visual Studio to the relevant GLUT files
(Optional, if you put your glut under C:/my/glut/)
Right click on your project name (on the right hand side) or pull
down the Project menu
Select Properties C/C++ properties
Select Generaland add the following line to Additional Include
Directories C:/my/glut/include
Select the Linker properties General and add the following line
to Additional Library Directories C:/my/glut/

Copyright@2011 by Jim X. Chen:
[email protected]
15
15
2. OpenGL/Glut Tutorial On Borland C++



Please visit web site for detail:
http://home.clara.net/paulyg/ogl.htm
http://www.gnt.net/~heiman/opengl.htm
http://www.opengl.org/Coding/Coding.html
Copyright@2011 by Jim X. Chen:
[email protected]
16
On SGI Workstations (ST Rm228 and Graphics Lab.)
16
The system administrator should have OpenGL library installed. Check this with
your system administrator
Download GLUT GUI library for SGI: Go to web site:
http://reality.sgi.com/opengl/glut3/glut3.html
Get GLUT documents from the same place
Following the instructions to compile and configure GLUT on your system
GLUT Online help: http://reality.sgi.com/opengl/spec3/spec3.html
Sample code: ftp://ftp.sgi.com/opengl/opengl12.tar.Z

Copyright@2011 by Jim X. Chen:
[email protected]
17
On SUN Workstations (ST2 SITE Lab.)
17
First we'll create directories for AUX and then copy AUX files from system directories.
(Here we use aux GUI library)

mkdir $HOME/OpenGL
mkdir $HOME/OpenGL/aux
mkdir $HOME/OpenGL/aux/examples
mkdir $HOME/OpenGL/aux/libaux
mkdir $HOME/OpenGL/aux/libtk
cd /usr/openwin/share/src/GL/contrib/utils/aux
cp ./aux/examples $HOME/OpenGL/aux/examples
cp ./aux/libaux $HOME/OpenGL/aux/libaux
cp ./aux/libtk $HOME/OpenGL/aux/libtk

OR just run the following command:
cp -r ~xwang1/OpenGL $HOME/OpenGL
Copyright@2011 by Jim X. Chen:
[email protected]
18
Reference web site:
http://sun.com/software/graphics/OpenGL/
After that, you have your environment ready. Now you can compile and run some
example program.

First change to the examples directory under your account by:
cd $HOME/OpenGL/aux/examples

then compile an example program (movelight.c) by
make movelight

finnally, run movelight, and you will see the result.
18
Copyright@2011 by Jim X. Chen:
[email protected]
19
Microsoft .NET development
environment and C#

C# (pronounced "C sharp") for the new Microsoft
.NET development environment provides tools
and services that fully exploit both computing and
communications.
C# is generally regarded as being a successor to
C++ that incorporates and improves upon the
major innovations made in the Java programming
language.
Copyright@2011 by Jim X. Chen:
[email protected]
20
C# OpenGL Wrapper
There is not yet a version of .NET which supports
OpenGL. But you may find several C# OpenGL
wrappers that are freely available. Google search
with the key words C# OpenGL wrapper.
The simplest C# OpenGL wrapper will be Colin
Fahey's C# OpenGL Wrapper. Detailed
information about this wrapper may be found at
http://www.colinfahey.com/opengl/csharp.htm.
Copyright@2011 by Jim X. Chen:
[email protected]
21
C# OpenGL Wrapper
Another open source wrapper CsGL at
http://csgl.sourceforge.net/.
It is recommended to use Colin Fahey's C#
OpenGL Wrapper because its simpler and rather
easier to install.
If you will be using Microsoft .NET to do your
project, please make sure to include the
information about the type of wrapper you are
using and the steps of running your project
when submitting it.
Copyright@2011 by Jim X. Chen:
[email protected]
22
Other References on Setting up
your Graphics programming
environment
http://www.cs.uml.edu/~hmasterm/Environments/environment.html
Set up DirectX programming environment (Visual C++)


22
Jim X. Chen, Ph.D.
Director of Computer Graphics Lab
George Mason University
23 Copyright@2011 by Jim X. Chen:
[email protected]
Copyright@2011 by Jim X. Chen:
[email protected]
Jim. X Chen and Chunyang Chen, Foundations of 3D Graphics
Programming, Springer Verlag, Second Edition, required text book.
Jim. X Chen, Guide to 3D Graphics Tools, Second Edition, Springer
Verlag, companion in C with a survey of graphics tools.
Mason Woo, Jackie Neider, and Tom Davis, OpenGL Programming Guide,
Addison Wesley. Programming examples
James D. Foley, Andries van Dam, Steven K. Feiner and John F. Hughes,
Computer Graphics: Principles and Practice, Addison Wesley. Detailed
theory in depth.
Donald Hearn and M. Pauline Baker, Computer Graphics, Printice-Hall.
Easy to read textbook for undergraduates. Contains more than enough.
24
Copyright@2011 by Jim X. Chen:
[email protected]
Objectives
Introduce basic graphics concepts
object, model, image, graphics library, frame buffer,
scan-conversion, clipping, and anti-aliasing
Set up OpenGL programming environment
Understand simple OpenGL programs
25
Copyright@2011 by Jim X. Chen:
[email protected]
Computer Graphics
CG displays or animates real or imaginary
objects from their computer-based models;
Modeling creating and modifying a model
image processing treats the inverse process:
the analysis of images, pattern recognition, or
the reconstruction of 2D or 3D objects from
images.

26
Points Lights nfaces Raytracing
Copyright@2011 by Jim X. Chen:
[email protected]
A graphics display is a drawing area comprised of an
array of fine points called pixels (picture elements).
At the heart of a graphics system there is a magic pen,
move at lightning speed to a specific pixel
draw the pixel with a specific color a red, green, and blue
(RGB) vector value.
Computer graphics is about using this pen automatically through
programming.
Display
27
Copyright@2011 by Jim X. Chen:
[email protected]
A real or imaginary object is represented in a computer as
a model, and is displayed as an image.
A model is an abstract description of the objects shape
(vertices) and attributes (colors),
which can be used to find all the points on the object
corresponding to the pixels in the drawing area.
Given a model, the application program will control the pen
through a graphics library to generate the corresponding image.
An image is simply a 2D array of pixels.
Object, Model, and I mage
28
tank
Copyright @ 2005 by Jim X. Chen:
[email protected]
2
9
User controls the creation, modification, and
animation of the models through input devices
(keyboard & mouse)

spider
I nteractive
Copyright@2011 by Jim X. Chen:
[email protected]
A graphics library provides a set of graphics commands or
functions.
bound in C, Java, or other programming languages on different
platforms.
specify primitive 2D and 3D geometric models to be digitized and
displayed.
Primitive models or simply primitives stand for some
simple shapes (such as points, lines, and polygons)
OpenGL is a graphics library; DirectX includes a graphics
library Direct3D
Primitive and Graphics Library
30
Primitive
Lab
Copyright@2011 by Jim X. Chen:
[email protected]
OpenGL is the most widely used graphics library (GL) or
application programming interface (API )
Compile and run Example J1_0_Point.java
To change the font size in Eclipes: Window->Preferences
General->Colors and Fonts->Basic->Text Font, then select.
Corresponding example in C: 1.1.point.c
links to all the example programs, and setting up working
environments on different platforms:
http://www.cs.gmu.edu/~jchen/graphics/
OpenGL Programming
31
Copyright@2011 by Jim X. Chen:
[email protected]
/* draw a point */
/* Javas supplied classes are imported. Here the awt (Abstract
Windowing Toolkit) is imported to provide Frame class, which
includes windowing functions
*/
import java.awt.*;

// JOGL: OpenGL functions
import net.java.games.jogl.*;
32
Copyright@2011 by Jim X. Chen:
[email protected]
/* Java class definition: extends means inherits. So J1_0_Point is a subclass
of Frame, and it inherits Frames variables and methods. implements means
GLEventListener is an interface, which only defines methods (init(), reshape(),
display(), and displaychanged()) without implementation. These methods are
actually callback functions handling events. J1_0_Point will implement
GLEventListeners methods and use them for different events.
*/
public class J1_0_Point extends Frame implements GLEventListener {

static int HEIGHT = 400, WIDTH = 400;
static GL gl; //interface to OpenGL
static GLCanvas canvas; // drawable in a frame

; // methods
}
33
Copyright@2011 by Jim X. Chen:
[email protected]
public class J1_0_Point extends Frame implements GLEventListener {



public J1_0_Point() { // constructor

//1. specify a drawable: canvas
GLCapabilities capabilities = new GLCapabilities();
canvas =
GLDrawableFactory.getFactory().createGLCanvas(capabilities);

//2. listen to the events related to canvas: reshape
canvas.addGLEventListener(this);

}

}
34
Copyright@2011 by Jim X. Chen:
[email protected]
public J1_0_Point() { // constructor

//3. add the canvas to fill the Frame container
add(canvas, BorderLayout.CENTER);
/* In Java, a method belongs to a class object.
Here the method add belongs to J1_0_Points
instantiation, which is frame in main function.
It is equivalent to use this.add(canvas, ...) */

//4. interface to OpenGL functions
gl = canvas.getGL();
}
public static void main(String[] args) {

J1_0_Point frame = new J1_0_Point();

}

35
Copyright@2011 by Jim X. Chen:
[email protected]
public class J1_0_Point extends Frame implements GLEventListener {

public static void main(String[] args) {
J1_0_Point frame = new J1_0_Point();

//5. set the size of the frame and make it visible
frame.setSize(WIDTH, HEIGHT);
frame.setVisible(true);
}

// Called once for OpenGL initialization
public void init(GLDrawable drawable) {

//6. specify a drawing color: red
gl.glColor3f(1.0f, 0.0f, 0.0f);
}

}
36
Copyright@2011 by Jim X. Chen:
[email protected]
public class J1_0_Point extends Frame implements GLE ventListener {



// Called for handling reshaped drawing area
public void reshape(GLDrawable drawable, int x, int y,
int width, int height) {

//7. specify the drawing area (frame) coordinates

gl.glMatrixMode(GL.GL_PROJECTION);
gl.glLoadIdentity();
gl.glOrtho(0, width, 0, height, -1.0, 1.0);
}


}



37
Copyright@2011 by Jim X. Chen:
[email protected]
public class J1_0_Point extends Frame implements GLEventListener {


// Called for OpenGL rendering every reshape
public void display(GLDrawable drawable) {

//8. specify to draw a point
gl.glBegin(GL.GL_POINTS);
gl.glVertex2i(WIDTH/2, HEIGHT/2);
gl.glEnd();
}

// called if display mode or device are changed
public void displayChanged(GLDrawable drawable,
boolean modeChanged, boolean deviceChanged) {
}
}

38
Copyright@2011 by Jim X. Chen:
[email protected]
/* Example 1.1.point.c: draw randomly generated points */
#include <stdlib.h>
#include <GL/glut.h>

#define Height 400
#define Width 400



Points
39
Copyright@2011 by Jim X. Chen:
[email protected]
void display(void)
{
int x, y;

//a. generate a random point
x = rand() % Width;
y = rand() % Height;
//b. specify a drawing color: red
glColor3f(1, 0, 0);

//c. specify to draw a point
glBegin(GL_POINTS);
glVertex2i (x,y);
glEnd();

//d. start drawing
glFlush();
}
40
Copyright@2011 by Jim X. Chen:
[email protected]
static void reshape(int w, int h)
{ //e. specify the windows coordinates
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
glOrtho(0, Width, 0, Height, -1.0, 1.0);
}

int main(int argc, char **argv)
{ //f. initialize a drawing area
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE);
glutInitWindowSize(Width, Height);
glutCreateWindow("Example 1.1.point.c");

//g. specify event callback functions
glutReshapeFunc(reshape);
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}
41
Copyright@2011 by Jim X. Chen:
[email protected]
Set up your programming environment
(due before next class)

1. Set up your programming environment, and run the
first sample program that draws a point (or
randomly generated points).
2. If you failed, schedule a time to come to my
office during my office hours or bring your
computer to the next class.
3. You dont have to let me know if you succeed in
setting up your working environment.

42

You might also like