Open GLTutorial
Open GLTutorial
application program
OpenGL Motif
widget or similar GLUT
GLX, AGL
or WGL GLU
Texture
Memory
Pixel
Operations
glVertex3fv( ... )
glClear(GL_COLOR_BUFFER_BIT)
glutMainLoop();
} enter event loop
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
}
viewing volume
z=0
z=0
void mydisplay()
{
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_POLYGON);
glVertex2f(-0.5, -0.5);
glVertex2f(-0.5, 0.5);
glVertex2f(0.5, 0.5);
glVertex2f(0.5, -0.5);
glEnd();
glFlush();
}
GL_POINTS GL_POLYGON
GL_LINES GL_LINE_STRIP
GL_LINE_LOOP
GL_TRIANGLES
GL_QUAD_STRIP
GL_TRIANGLE_STRIP GL_TRIANGLE_FAN
x y z w
glBegin( GL_QUADS );
glVertex2f( -0.8, -0.8 );
glVertex2f( 0.8, -0.8 );
glVertex2f( 0.8, 0.8 );
glVertex2f( -0.8, 0.8 );
glEnd();
GL_QUADS
glColor3f( r, g, b );
Where you specify the color determines
how the primitive is shaded
points only get one color
init();
glutDisplayFunc( drawScene );
glutMainLoop();
}
v1
X
v0
glBegin(GL_LINE_LOOP) Y
glVertex3f(0.0f, 0.0f, 0.0f); // v0 v2
glVertex3f(50.0f, 50.0f, 0.0f); // v1
glVertex3f(50.0f, 100.0f, 0.0f); // v2 v1
glEnd();
v0 X
v5
v1
X
v3 v4 v0 v2
v4
v2
v2 v2
v3 v3
v0 v1 v0 v1 v0 v1
v1 2 v3 v1 2 v3 v1 v3 2 v5
1 3 1 3 1 3
v0 4 v2 v0 4 v2 v0 v2 4 v4
Example of GL_QUAD Progression of GL_QUAD_STRIP
v0 v1
v2
v3
v4
390 nm 720 nm
Yellow
(0,255,0) (255,255,0)
Cyan
(0,255,255) White
(255,255,255)
Black
(0,0,0) Red
Magenta
(255,0,255)
Blue
glBegin( GL_TRIANGLEs);
glColor3f(1.0f, 0.0f, 0.0f); // red
glVertex3f( -1.0f, 0.0f, 0.0f);
glColor3f(0.0f, 1.0f, 0.0f); // green
glVertex3f(1.0f, 0.0f, 0.0f);
glColor3f(0.0f, 0.0f, 1.0f); // blue
glVertex3f(0.0f, 1.0f, 0.0f);
glEnd();
(0,0,0) (255,255,255)
black White
glColor3f( r, g, b );
glBegin( GL_TRIANGLES );
glVertex3fv( v1 );
glVertex3fv( v2 );
glVertex3fv( v3 );
glEnd();
glColor3f( r, g, b );
glBegin( GL_TRIANGLES );
glVertex3fv( v1 );
glVertex3fv( v2 );
glVertex3fv( v3 );
glEnd();
glBegin( GL_TRIANGLES );
glColor3fv( c1 );
glVertex3fv( v1 );
glColor3fv( c2 );
glVertex3fv( v2 );
glColor3fv( c3 );
glVertex3fv( v3 );
glEnd();
glBegin( GL_TRIANGLES );
glColor3fv( c1 );
glVertex3fv( v1 );
glColor3fv( c2 );
glVertex3fv( v2 );
glColor3fv( c3 );
glVertex3fv( v3 );
glEnd();
Pradondet Nilagupta
Department of Computer Engineering
Kasetsart University
glBegin(GL_POINTS)
glBegin(GL_LINES) ;
glVertex2i(100,100);
glVertex2i(200,150);
glEnd( );
Void drawLine ( int x1, int y1, int x2, int y2)
{
glBegin(GL_LINES):
glVertex2i(x1,y1);
glVertex2i(x2,y2);
glEnd( );
}
glBegin(GL_LINES) ;
glVertex2f(100,100);
glVertex2f(200,150);
glEnd( );
Void drawLine ( float x1, float y1, float x2, float y2)
{
glBegin(GL_LINES):
glVertex2f(x1,y1);
glVertex2f(x2,y2);
glEnd( );
}
glBegin(GL_LINES) ;
glVertex2d(100,100);
glVertex2d(200,150);
glEnd( );
Void drawLine ( double x1, double y1, double x2, double y2)
{
glBegin(GL_LINES):
glVertex2d(x1,y1);
glVertex2d(x2,y2);
glEnd( );
}
glBegin(GL_LINE_STRIP) ;
glVertex2i(100,100);
glVertex2i(200,150);
glVertex2i(300,50);
glEnd( );
Void drawLine ( int x1, int y1, int x2, int y2, int x3, int y3)
{
glBegin(GL_LINE_STRIP):
glVertex2i(x1,y1);
glVertex2i(x2,y2);
glVertex2i(x3,y3);
glEnd( );
}
204481 Foundation of Computer Graphics December 19, 2019 85
Menggambar PolyLine : Tipe float 4 titik
glBegin(GL_LINE_STRIP) ;
glVertex2f(100,100);
glVertex2f(200,150);
glVertex2f(300,50);
glVertex2f(400,200);
glEnd( );
Void drawLine ( float x1, float y1, float x2, float y2, float x3, float y3, float x4,
float y4)
{
glBegin(GL_LINE_STRIP):
glVertex2f(x1,y1);
glVertex2f(x2,y2);
glVertex2f(x3,y3);
glVertex2f(x4,y4);
glEnd( );
204481 Foundation of Computer Graphics December 19, 2019 86
Menggambar PolyLine : Tipe double 5 titik
glBegin(GL_LINE_STRIP) ;
glVertex2d(100,100);
glVertex2d(200,150);
glVertex2d(300,50);
glVertex2d(400,200);
glVertex2d(250, 250);
glEnd( );
Void drawLine ( double x1, double y1, double x2, double y2, double x3, double y3,
double x4, double y4, double x5, double y5)
{
glBegin(GL_LINE_STRIP):
glVertex2d(x1,y1);
glVertex2d(x2,y2);
glVertex2d(x3,y3);
glVertex2d(x4,y4);
glVertex2d(x5,y5);
glEnd( );
} 204481 Foundation of Computer Graphics December 19, 2019 87
Menggambar Polygon : Tipe float 4 titik
glBegin(GL_LINE_LOOP) ;
glVertex2f(100,100);
glVertex2f(200,150);
glVertex2f(300,50);
glVertex2f(400,200);
glEnd( );
Void drawLine ( float x1, float y1, float x2, float y2, float x3, float y3, float x4,
float y4)
{
glBegin(GL_LINE_LOOP);
glVertex2f(x1,y1);
glVertex2f(x2,y2);
glVertex2f(x3,y3);
glVertex2f(x4,y4);
glEnd( );
204481 Foundation of Computer Graphics December 19, 2019 88
Menggambar Polygon : Tipe integer 3 titik
glBegin(GL_LINE_LOOP) ;
glVertex2i(100,100);
glVertex2i(200,150);
glVertex2i(300,50);
glEnd( );
Void drawLine ( int x1, int y1, int x2, int y2, int x3, int y3)
{
glBegin(GL_LINE_LOOP);
glVertex2i(x1,y1);
glVertex2i(x2,y2);
glVertex2i(x3,y3);
glEnd( );
}
glBegin(GL_LINE_LOOP) ;
glVertex2d(100,100);
glVertex2d(200,150);
glVertex2d(300,50);
glVertex2d(400,200);
glVertex2d(250,250);
glEnd( );
Void drawLine ( double x1, double y1, double x2, double y2, double x3, double y3,
double x4, double y4, double x5, double y5)
{
glBegin(GL_LINE_LOOP);
glVertex2d(x1,y1);
glVertex2d(x2,y2);
glVertex2d(x3,y3);
glVertex2d(x4,y4);
glVertex2d(x5,y5);
glEnd( );
} 204481 Foundation of Computer Graphics December 19, 2019 90
Menggambar PolyLine :
drawPolyline(nama_objek2D, jumlah_titik)
}
glEnd ( );
}
}
glEnd ( );
}
}
glEnd ( );
}