Lab 1: OpenGL Tutorial - Computer Science & Engineering

rodscarletΛογισμικό & κατασκευή λογ/κού

14 Δεκ 2013 (πριν από 3 χρόνια και 10 μήνες)

102 εμφανίσεις

What’s the plan for today?

Go over our framework code.

Learn some basic OpenGL!

Reveal Lab 1

Answer questions

Framework Environment

C/C++ and OpenGL

Code will be given with
Makefiles

You can compile in Linux, Mac, and Windows!

You
must

use the framework

What should you know?

At the very least

You’ve programmed before

You know the programming cycle

Better for you if

You are familiar with C/C++

Amazing

if

You already know OpenGL

Have a degree in Computer Science

Framework

Where do I get it?!

Resources in Class Website

This lab’s framework provides you with

An initial OpenGL window

Callback functions you will need

What is OpenGL?

A powerful, open source graphics library

Widely used in both industry and academia

Capable of rendering 3D geometries with a
plethora of effects

Keeps a “global” state

Transformation, projection matrices

Attributes from primitives

Exercise: Compiling

Compile the framework

Change window size, position, and title

Exercise: Drawing Things!

Since you guys are now pros, let’s draw things!

Every GL primitive starts with
glBegin
(…), and ends
with
glEnd

()

Example:

glBegin

(GL_POINT);

glVertex3f( 1.0,1.0,1.0);

glEnd
()



Exercise: Drawing Quads

Find the
DrawGLScene
() function


After
glLoadIdentity
(), create a GL primitive

using GL_QUADS

Exercise: Drawing Quads

Add this code



And this code…

What just happened?!

OK, that’s weird, why is the screen yellow?

We’ve basically rendered our object too close
for us to really see it. So, we need to move (or
translate) it further back.

Translation and Rotation

Rotation (unsurprisingly) rotates the primitive,

BUT

rotates it around the “world” axis,
NOT

its

local axis

Hint: You can think of the camera as always being at the
world origin(0,0,0)

Translation “moves” the primitive around to a

different location

The order you do translations and rotations in
MATTERS

Translation and Rotation

Rotate



Translate

Translation and Rotation

Rotate then Translate



Translate then Rotate

Translation and Rotation

WARNING!!!

OpenGL will perform translations and rotations IN THE
OPPOSITE ORDER
YOU WRITE THEM IN CODE

i.e. writing the following in code:





glTranslate
(...)


glRotate
(…)




Will rotate then translate the primitive

Translation and Rotation

Important things to keep in mind:

Translate/Rotate operates relative to the world
origin

The order of translations and rotations matters

OpenGL will perform translations and rotations in
the OPPOSITE order you list them
in code


Exercise: Finish the cube

Add this line of code above your primitive in your
drawing function.


Finish the rest of the cube.

Change the color of each side to something else!

glColor3f( red, green, blue );

Callbacks

GLUT allows us to interface between events
(such as clicking, keyboard input, etc.) and
OpenGL.

Lab 1

Implement a camera to move around in OpenGL.

Use the callback functions provided for you.

Use the cube as a way to debug your camera.

Make sure you at least create a vector, camera,
and framework class.

Questions?

Useful sites

OpenGL Reference Pages:

http://www.opengl.org/sdk/docs/man/

(what we use)

http://www.opengl.org/sdk/docs/man4/

(latest ver.)

NeHe

Tutorials (under Legacy Tutorials):

http://nehe.gamedev.net/

Note: As of Aug. 2011, the current tutorials are a little
out
-
of
-
date/deprecated, but in the process of being
updated. They still give a good explanation of the
basics, but don’t expect to be able to run the code.