Intro to 3D Models Frames Geometry

advertisement
Intro to 3D Models
Angel 4.1-4.3
Angel: Interactive Computer Graphics5E © Addison-Wesley 2009
1
Objectives
• Introduce the elements of geometry
– Scalars
– Vectors
– Points
• Develop mathematical operations among
them in a coordinate-free manner
• Define basic primitives
– Line segments
– Polygons
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
2
Basic Elements
• Geometry is the study of the relationships
among objects in an n-dimensional space
– In computer graphics, we are interested in
objects that exist in three dimensions
• Want a minimum set of primitives from
which we can build more sophisticated
objects
• We will need three basic elements
– Scalars
– Vectors
– Points
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
3
Geometric Objects
Angel: Interactive Computer Graphics5E © Addison-Wesley 2009
4
Coordinate-Free Geometry
• When we learned simple geometry, most of us
started with a Cartesian approach
– Points were at locations in space p=(x,y,z)
– We derived results by algebraic manipulations
involving these coordinates
• This approach was nonphysical
– Physically, points exist regardless of the location of
an arbitrary coordinate system
– Most geometric results are independent of the
coordinate system
– Example Euclidean geometry: two triangles are
identical if two corresponding sides and the angle
between them are identical
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
5
Coordinate Independence
Angel: Interactive Computer Graphics5E © Addison-Wesley 2009
6
Scalars
• Need three basic elements in geometry
– Scalars, Vectors, Points
• Scalars can be defined as members of sets
which can be combined by two operations
(addition and multiplication) obeying some
fundamental axioms (associativity, commutivity,
inverses)
• Examples include the real and complex number
systems under the ordinary rules with which we
are familiar
• Scalars alone have no geometric properties
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
7
Vectors
• Physical definition: a vector is a quantity
with two attributes
– Direction
– Magnitude
• Examples include
– Force
– Velocity
– Directed line segments
v
• Most important example for graphics
• Can map to other types
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
8
Vector Operations
• Every vector has an inverse
– Same magnitude but points in opposite direction
• Every vector can be multiplied by a scalar
• There is a zero vector
– Zero magnitude, undefined orientation
• The sum of any two vectors is a vector
– Use head-to-tail axiom
v
-v
v
w
v
u
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
9
Linear Vector Spaces
• Mathematical system for manipulating
vectors
• Operations
– Scalar-vector multiplication u=v
– Vector-vector addition: w=u+v
• Expressions such as
– v=u+2w-3r
• Make sense in a vector space
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
10
Vectors Lack Position
• These vectors are identical
– Same length and magnitude
• Vectors spaces insufficient for geometry
– Need points
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
11
Points
• Location in space
• Operations allowed between points and
vectors
– Point-point subtraction yields a vector
– Equivalent to point-vector addition
v=P-Q
P=v+Q
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
12
Affine Spaces
• Point + a vector space
• Operations
– Vector-vector addition
– Scalar-vector multiplication
– Point-vector addition
– Scalar-scalar operations
• For any point define
–1•P=P
– 0 • P = 0 (zero vector)
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
13
Lines
• Consider all points of the form
– P(a)=P0 + a d
– Set of all points that pass through P0 in the direction of
the vector d
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
14
Parametric Form
• This form is known as the parametric form
of the line
– More robust and general than other forms
– Extends to curves and surfaces
• Two-dimensional forms
– Explicit: y = mx +h
– Implicit: ax + by +c =0
– Parametric:
–
x() = x0 + (1- )x1
–
y() =  y0 + (1- )y1
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
15
Rays and Line Segments
• If  >= 0, then P() is the ray
leaving P0 in the direction d
• If we use two points to define
v, then
P() = Q +  (R-Q)= Q +  v
=  R + (1- )Q
• For 0 ≤  ≤ 1 we get all the
points on the line segment
joining R and Q
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
16
Convexity
• An object is convex iff for any two points in
the object all points on the line segment
between these points are also in the object
P
P
Q
convex
Q
not convex
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
17
Affine Sums
• Consider the “sum”
P=a1P1+a2P2+…..+anPn
• Can show by induction that this sum
makes sense iff
a1+a2+…..an=1
• in which case we have the affine sum of
the points P1,P2,…..Pn
• If, in addition, ai>=0, we have the
convex hull of P1,P2,…..Pn
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
18
Convex Hull
• Smallest convex object containing P1,P2,…..Pn
• Formed by “shrink wrapping” points
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
19
Curves and Surfaces
• Curves are one parameter entities of the
form P(a) where the function is nonlinear
• Surfaces are formed from twoparameter functions P(a, b)
– Linear functions give planes and polygons
P()
P(, b)
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
20
Planes
• A plane can be defined by a point and
two vectors or by three points P
v
Q
R
u
P(,b)=R+u+bv
R
P(,b)=R+(Q-R)+b(P-Q)
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
21
Triangles
convex sum of S() and R
convex sum of P and Q
for 0<=,b<=1, we get all points in triangle
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
22
Normals
• Every plane has a vector n normal
(perpendicular, orthogonal) to it
• From point-two vector form P(a,b)=R+au+bv, we
know we can use the cross product to find
n = u  v and the equivalent form
(P(a)-P)  n=0
v
P
u
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
23
REPRESENTATION
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
24
Objectives
• Introduce concepts such as dimension
and basis
• Introduce coordinate systems for
representing vectors spaces and frames
for representing affine spaces
• Discuss change of frames and bases
• Introduce homogeneous coordinates
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
25
Linear Independence
• A set of vectors v1, v2, …, vn is linearly
independent if
a1v1+a2v2+.. An
vn=0 iff a1=a2=…=0
• If a set of vectors is linearly independent,
we cannot represent one in terms of the
others
• If a set of vectors is linearly dependent, as
least one can be written in terms of the
others
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
26
Dimension
• In a vector space, the maximum number of
linearly independent vectors is fixed and is
called the dimension of the space
• In an n-dimensional space, any set of n linearly
independent vectors form a basis for the space
• Given a basis v1, v2,…., vn, any vector v can be
written as
v=a1v1+ a2v2 +….+anvn
where the {ai} are unique
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
27
Representation
• Until now we have been able to work with
geometric entities without using any frame
of reference, such as a coordinate system
• Need a frame of reference to relate points
and objects to our physical world.
– For example, where is a point? Can’t answer
without a reference system
– World coordinates
– Camera coordinates
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
28
Coordinate Systems
• Consider a basis v1, v2,…., vn
• A vector is written v=a1v1+ a2v2 +….+anvn
• The list of scalars {a1, a2, …. an} is the
representation of v with respect to the
given basis
• We can write the representation as a row
or column array of scalars  1 
a=[1
2 ….
 
2
T

n] =  . 
 
 n
 
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
29
Example
• v=2v1+3v2-4v3
• a=[2 3 –4]T
• Note that this representation is with
respect to a particular basis
• For example, in OpenGL we start by
representing vectors using the object
basis but later the system needs a
representation in terms of the camera or
eye basis
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
30
Coordinate Systems
• Which is correct?
v
v
• Both are because vectors have no fixed
location
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
31
Frames
• A coordinate system is insufficient to
represent points
• If we work in an affine space we can add
a single point, the origin, to the basis
vectors to form a frame
v2
v1
P0
v3
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
32
Representation in a Frame
• Frame determined by (P0, v1, v2, v3)
• Within this frame, every vector can be
written as
•
v=a1v1+ a2v2 +….+anvn
• Every point can be written as
•
P = P0 + b1v1+ b2v2 +….+bnvn
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
33
Confusing Points and Vectors
• Consider the point and the vector
P = P0 + b1v1+ b2v2 +….+bnvn
v=a1v1+ a2v2 +….+anvn
• They appear to have the similar representations
p=[b1 b2 b3]
v=[a1 a2 a3]
• which confuses the point with the vector
• A vector has no position
v
p
v
Vector can be placed anywhere
point: fixed
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
34
A Single Representation
• If we define 0•P = 0 and 1•P =P then we can write
v = a1v1+ a2v2 +a3v3
= [a1 a2 a3 0 ] [v1 v2 v3 P0] T
P = P0 + b1v1+ b2v2 +b3v3
= [b1 b2 b3 1 ] [v1 v2 v3 P0] T
• Thus we obtain the four-dimensional homogeneous
coordinate representation
v = [a1 a2 a3 0 ] T
P = [b1 b2 b3 1 ] T
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
35
Homogeneous Coordinates
• The homogeneous coordinates form for a three
dimensional point [x y z] is given as
• p =[x’ y’ z’ w] T =[wx wy wz w] T
• We return to a three dimensional point (for w0) by
xx’/w
yy’/w
zz’/w
• If w=0, the representation is that of a vector
• Note that homogeneous coordinates replaces
points in three dimensions by lines through the
origin in four dimensions
• For w=1, the representation of a point is [x y z 1]
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
36
Homogeneous Coordinates and
Computer Graphics
• Homogeneous coordinates are key to all
computer graphics systems
– All standard transformations (rotation,
translation, scaling) can be implemented with
matrix multiplications using 4 x 4 matrices
– Hardware pipeline works with 4 dimensional
representations
– For orthographic viewing, we can maintain w=0
for vectors and w=1 for points
– For perspective we need a perspective division
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
37
Change of Coordinate Systems
• Consider two representations of a the
same vector with respect to two different
bases. The representations are
a=[1 2 3 ]
b=[b1 b2 b3]
where
v=1v1+ 2v2 +3v3 = [1 2 3] [v1 v2 v3] T
=b u + b u +b u = [b b b ] [u u u ] T
1 1
2 2
3 3
1
2
3
1
2
3
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
38
Representing second basis in
terms of first
• Each of the basis vectors, u1,u2, u3, are
vectors that can be represented in terms
of the first basis
u1 = g11v1+g12v2+g13v3
u2 = g21v1+g22v2+g23v3
u3 = g31v1+g32v2+g33v3
v
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
39
Matrix Form
• The coefficients define a 3 x 3 matrix
 g g g 
g

M =   g  g  
 g  g  g 33 
• and the bases can be related by
a=MTb
• see text for numerical examples
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
40
Change of Frames
• We can apply a similar process in
homogeneous coordinates to the
representations of both points and
vectors
u1
v2
Consider two frames:
Q0
(P0, v1, v2, v3)
(Q0, u1, u2, u3)
P0
v
1
v3
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
u2
u3
41
Representing One Frame in Terms of the Other
Extending what we did with change of bases
u1 = g11v1 + g12v2 + g13v3
u2 = g21v1 + g22v2 + g23v3
u3 = g31v1 + g32v2 + g33v3
Q0 = g41v1 + g42v2 + g43v3 + g44P0
defining a 4 x 4 matrix
 g g
g
g



M=
 g  g 

 g  g 
g 
g  
g  

g  
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
42
Working with Representations
• Within the two frames any point or vector has a
representation of the same form
a=[a1 a2 a3 a4 ] in the first frame
b=[b1 b2 b3 b4 ] in the second frame
• where a4 = b4 = 1 for points and a4 = b4 = 0 for
vectors and
a=MTb
• The matrix M is 4 x 4 and specifies an affine
transformation in homogeneous coordinates
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
43
Affine Transformations
• Every linear transformation is equivalent
to a change in frames
• Every affine transformation preserves
lines
• However, an affine transformation has
only 12 degrees of freedom because 4
of the elements in the matrix are fixed
and are a subset of all possible 4 x 4
linear transformations
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
44
Frames & Geometry
Angel 4.4-4.5
Angel: Interactive Computer Graphics5E © Addison-Wesley 2009
45
Objectives
• Discuss frames
• Introduce simple data structures for
building polygonal models
– Vertex lists
– Edge lists
• OpenGL vertex arrays
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
46
Homogeneous Coordinates
• The homogeneous coordinates form for a three
dimensional point [x y z] is given as
• p =[x’ y’ z’ w] T =[wx wy wz w] T
• We return to a three dimensional point (for w0) by
xx’/w
yy’/w
zz’/w
• If w=0, the representation is that of a vector
• Note that homogeneous coordinates replaces
points in three dimensions by lines through the
origin in four dimensions
• For w=1, the representation of a point is [x y z 1]
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
47
Homogeneous Coordinates and
Computer Graphics
• Homogeneous coordinates are key to all
computer graphics systems
– All standard transformations (rotation,
translation, scaling) can be implemented with
matrix multiplications using 4 x 4 matrices
– Hardware pipeline works with 4 dimensional
representations
– For orthographic viewing, we can maintain w=0
for vectors and w=1 for points
– For perspective we need a perspective division
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
48
Change of Coordinate Systems
• Consider two representations of a the
same vector with respect to two different
bases. The representations are
a=[1 2 3 ]
b=[b1 b2 b3]
where
v=1v1+ 2v2 +3v3 = [1 2 3] [v1 v2 v3] T
=b u + b u +b u = [b b b ] [u u u ] T
1 1
2 2
3 3
1
2
3
1
2
3
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
49
Representing second basis in
terms of first
• Each of the basis vectors, u1,u2, u3, are
vectors that can be represented in terms
of the first basis
u1 = g11v1+g12v2+g13v3
u2 = g21v1+g22v2+g23v3
u3 = g31v1+g32v2+g33v3
v
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
50
Matrix Form
• The coefficients define a 3 x 3 matrix
 g g g 
g

M =   g  g  
 g  g  g 33 
• and the bases can be related by
a=MTb
• see text for numerical examples
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
51
Change of Frames
• We can apply a similar process in
homogeneous coordinates to the
representations of both points and
vectors
u1
v2
Consider two frames:
Q0
(P0, v1, v2, v3)
(Q0, u1, u2, u3)
P0
v
1
v3
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
u2
u3
52
Representing One Frame in Terms of the Other
Extending what we did with change of bases
u1 = g11v1 + g12v2 + g13v3
u2 = g21v1 + g22v2 + g23v3
u3 = g31v1 + g32v2 + g33v3
Q0 = g41v1 + g42v2 + g43v3 + g44P0
defining a 4 x 4 matrix
 g g
g
g



M=
 g  g 

 g  g 
g 
g  
g  

g  
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
53
Working with Representations
• Within the two frames any point or vector has a
representation of the same form
a=[a1 a2 a3 a4 ] in the first frame
b=[b1 b2 b3 b4 ] in the second frame
• where a4 = b4 = 1 for points and a4 = b4 = 0 for
vectors and
a=MTb
• The matrix M is 4 x 4 and specifies an affine
transformation in homogeneous coordinates
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
54
Affine Transformations
• Every linear transformation is equivalent
to a change in frames
• Every affine transformation preserves
lines
• However, an affine transformation has
only 12 degrees of freedom because 4
of the elements in the matrix are fixed
and are a subset of all possible 4 x 4
linear transformations
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
55
The World and Camera Frames
• When we work with representations, we
work with n-tuples or arrays of scalars
• Changes in frame are then defined by 4 x 4
matrices
• In OpenGL, the base frame that we start
with is the world frame
• Eventually we represent entities in the
camera frame by changing the world
representation using the model-view matrix
• Initially these frames are the same (M=I)
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
56
Moving the Camera
• If objects are on both sides of z=0, we
must move camera frame
M=
1
0

0

0
0 0 0
1 0 0 
0 1  d

0 0 1 
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
57
GEOMETRIC MODELING
Angel: Interactive Computer Graphics5E © Addison-Wesley 2009
58
Representing a Mesh
• Consider a mesh
e2
v6
e1
v1
e6
v5
e3
e8 v e9
v4
8
e11
e10
e4
e7 v7
v2 e12
e5 v3
• There are 8 nodes and 12 edges
– 5 interior polygons
– 6 interior (shared) edges
• Each vertex has a location vi = (xi yi zi)
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
59
Simple Representation
• Define each polygon by the geometric locations
of its vertices
• Leads to OpenGL code such as
glBegin(GL_POLYGON);
glVertex3f(x1, y1, z1);
glVertex3f(x6, y6, z6);
glVertex3f(x7, y7, z7);
glEnd();
• Inefficient and unstructured
– Consider moving a vertex to a new location
– Must search for all occurrences
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
60
Inward and Outward Facing Polygons
• The order {v1, v6, v7} and {v6, v7, v1} are equivalent
in that the same polygon will be rendered by
OpenGL but the order {v1, v7, v6} is different
• The first two describe outwardly
facing polygons
• Use the right-hand rule =
counter-clockwise encirclement
of outward-pointing normal
• OpenGL can treat inward and
outward facing polygons differently
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
61
Geometry vs Topology
• Generally it is a good idea to look for data
structures that separate the geometry from
the topology
– Geometry: locations of the vertices
– Topology: organization of the vertices and
edges
– Example: a polygon is an ordered list of
vertices with an edge connecting successive
pairs of vertices and the last to the first
– Topology holds even if geometry changes
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
62
Vertex Lists
• Put the geometry in an array
• Use pointers from the vertices into this array
• Introduce a polygon list
P1
P2
P3
P4
P5
topology
v1
v7
v6
v8
v5
v6
x 1 y 1 z1
x 2 y 2 z2
x 3 y 3 z3
x 4 y 4 z4
x5 y5 z5.
x 6 y 6 z6
x 7 y 7 z7
geometry x8 y8 z8
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
63
Shared Edges
• Vertex lists will draw filled polygons
correctly but if we draw the polygon by its
edges, shared edges are drawn twice
• Can store mesh by edge list
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
64
Edge List
e2
e1
e2
e3
e4
e5
e6
e7
e8
e9
v1
v6
x 1 y 1 z1
x 2 y 2 z2
x 3 y 3 z3
x 4 y 4 z4
x5 y5 z5.
x 6 y 6 z6
x 7 y 7 z7
x 8 y 8 z8
v6
e1
v1
e6
v5
e3
e8 v e9
8
e11
e10
e4
e7 v7
v2 e12
e5 v3
Note polygons are
not represented
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
65
Modeling a Cube
Model a color cube for rotating cube program
Define global arrays for vertices and colors
GLfloat vertices[][3] = {{-1.0,-1.0,-1.0},{1.0,-1.0,-1.0},
{1.0,1.0,-1.0}, {-1.0,1.0,-1.0}, {-1.0,-1.0,1.0},
{1.0,-1.0,1.0}, {1.0,1.0,1.0}, {-1.0,1.0,1.0}};
GLfloat colors[][3] = {{0.0,0.0,0.0},{1.0,0.0,0.0},
{1.0,1.0,0.0}, {0.0,1.0,0.0}, {0.0,0.0,1.0},
{1.0,0.0,1.0}, {1.0,1.0,1.0}, {0.0,1.0,1.0}};
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
66
Drawing a polygon from a list of indices
• Draw a quadrilateral from a list of indices into
the array vertices and use color corresponding
to first index
void polygon(int a, int b, int c
, int d)
{
glBegin(GL_POLYGON);
glColor3fv(colors[a]);
glVertex3fv(vertices[a]);
glVertex3fv(vertices[b]);
glVertex3fv(vertices[c]);
glVertex3fv(vertices[d]);
glEnd();
}
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
67
Draw cube from faces
void colorcube( )
{
polygon(0,3,2,1);
polygon(2,3,7,6);
polygon(0,4,7,3);
polygon(1,2,6,5);
polygon(4,5,6,7);
polygon(0,1,5,4);
}
5
6
2
1
7
4
0
3
Note that vertices are ordered so that
we obtain correct outward facing normals
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
68
Efficiency
• The weakness of our approach is that we
are building the model in the application
and must do many function calls to draw
the cube
• Drawing a cube by its faces in the most
straight forward way requires
–
–
–
–
6 glBegin, 6 glEnd
6 glColor
24 glVertex
More if we use texture and lighting
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
69
Vertex Arrays
• OpenGL provides a facility called vertex arrays
that allows us to store array data in the
implementation
• Six types of arrays supported
–
–
–
–
–
–
Vertices
Colors
Color indices
Normals
Texture coordinates
Edge flags
• We will need only colors and vertices
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
70
Initialization
• Using the same color and vertex data, first we
enable
glEnableClientState(GL_COLOR_ARRAY);
glEnableClientState(GL_VERTEX_ARRAY);
• Identify location of arrays
glVertexPointer(3, GL_FLOAT, 0, vertices);
3d arrays
stored as floats
data array
data contiguous
glColorPointer(3, GL_FLOAT, 0, colors);
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
71
Mapping indices to faces
• Form an array of face indices
GLubyte cubeIndices[24] = {0,3,2,1,2,3,7,6
0,4,7,3,1,2,6,5,4,5,6,7,0,1,5,4};
• Each successive four indices describe a
face of the cube
• Draw through glDrawElements which
replaces all glVertex and glColor calls
in the display callback
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
72
Drawing the cube
• Method 1:
what to draw
number of indices
for(i=0; i<6; i++) glDrawElements(GL_POLYGON, 4,
GL_UNSIGNED_BYTE, &cubeIndices[4*i]);
format of index data
start of index data
• Method 2:
glDrawElements(GL_QUADS, 24,
GL_UNSIGNED_BYTE, cubeIndices);
Draws cube with 1 function call!!
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
73
Download