0% found this document useful (0 votes)
78 views31 pages

Grafik Komputer

The document discusses the basics of OpenGL programming. It explains that OpenGL provides an application programming interface (API) for programmers to interface with graphics hardware. It describes some basic OpenGL objects like points, lines, polygons, and curves. It also explains common OpenGL functions and concepts like defining objects with vertices, setting colors, and the overall software organization and event loop structure of OpenGL programs.

Uploaded by

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

Grafik Komputer

The document discusses the basics of OpenGL programming. It explains that OpenGL provides an application programming interface (API) for programmers to interface with graphics hardware. It describes some basic OpenGL objects like points, lines, polygons, and curves. It also explains common OpenGL functions and concepts like defining objects with vertices, setting colors, and the overall software organization and event loop structure of OpenGL programs.

Uploaded by

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

Pemrograman

OpenGL Dasar
Materi 03
Grafik Komputer 1
The Programmer’s
Interface
Programmer sees the graphics
system through a software interface:
the Application Programmer
Interface (API)
API Contents
Functionsthat specify what we need to
form an image
Objects

Viewer

LightSource(s)
Materials

Other information
Inputfrom devices such as mouse and
keyboard
Capabilities of system
Object Specification
MostAPIs support a limited set of
primitives including
Points (0D object)
Line segments (1D objects)
Polygons (2D objects)
Some curves and surfaces
Quadrics
Parametric polynomials

All
are defined through locations in
space or vertices
OpenGL
The success of GL lead to OpenGL
(1992), a platform-independent API
that was
Easy to use
Close enough to the hardware to get
excellent performance
Focus on rendering

Omitted windowing and input to avoid


window system dependencies
OpenGL Libraries
OpenGL core library
OpenGL32 on Windows
GL on most unix/linux systems (libGL.a)

OpenGL Utility Library (GLU)


Provides functionality in OpenGL core but
avoids having to rewrite code
Links with window system
GLX for X window systems
WGL for Windows
AGL for Macintosh
GLUT
OpenGL Utility Toolkit (GLUT)
Provides functionality common to all window
systems
 Open a window
 Get input from mouse and keyboard

 Menus

 Event-driven

Code is portable but GLUT lacks the


functionality of a good toolkit for a specific
platform
 No slide bars
Software Organization

application program

OpenGL Motif
widget or similar GLUT
GLX, AGL
or WGL GLU

X, Win32, Mac O/S GL

software and/or hardware


OpenGL function format
function name
dimensions

glVertex3f(x,y,z)

x,y,z are floats


belongs to GL library

glVertex3fv(p)

p is a pointer to an array
Example
type of object
location of vertex
glBegin(GL_POLYGON)
glVertex3f(0.0, 0.0, 0.0);
glVertex3f(0.0, 1.0, 0.0);
glVertex3f(0.0, 0.0, 1.0);
glEnd( );

end of object definition


OpenGL Primitives

GL_POINTS GL_POLYGON
GL_LINES GL_LINE_STRIP

GL_LINE_LOOP

GL_TRIANGLES
GL_QUAD_STRIP

GL_TRIANGLE_STRIP GL_TRIANGLE_FAN
A Simple Program
Generate a square on a solid
background
simple.c
#include <GL/glut.h>
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();
}
int main(int argc, char** argv){
glutCreateWindow("simple");
glutDisplayFunc(mydisplay);
glutMainLoop();
}
OpenGL #defines
Most constants are defined in the
include files gl.h, glu.h and glut.h
Note #include <GL/glut.h> should
automatically include the others
Examples

glBegin(GL_POLYGON)

glClear(GL_COLOR_BUFFER_BIT)

includefiles also define OpenGL data


types: GLfloat, GLdouble,….
Event Loop
Note that the program defines a display
callback function named mydisplay
Every glut program must have a display
callback
The display callback is executed whenever
OpenGL decides the display must be
refreshed, for example when the window is
opened
The main function ends with the program
entering an event loop
Defaults
simple.c is too simple
Makes heavy use of state variable
default values for
Viewing

Colors

Window parameters
Nextversion will make the defaults
more explicit
Program Structure
 Most OpenGL programs have a similar structure
that consists of the following functions
 main():
 defines the callback functions
 opens one or more windows with the required properties
 enters event loop (last executable statement)
 init(): sets the state variables
 Viewing
 Attributes
 callbacks
 Display function
 Input and window functions
simple.c revisited
 In this version, we shall see the same
output but we have defined all the
relevant state values through
function calls using the default values
 In particular, we set
 Colors
 Viewing conditions

 Window properties
main.c

#include <GL/glut.h> includes gl.h

int main(int argc, char** argv)


{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowSize(500,500);
glutInitWindowPosition(0,0);
glutCreateWindow("simple"); define window properties
glutDisplayFunc(mydisplay);
display callback
init(); set OpenGL state
glutMainLoop();
} enter event loop
GLUT functions
 glutInit allows application to get command line
arguments and initializes system
 gluInitDisplayMode requests properties for the window
(the rendering context)
 RGB color
 Single buffering
 Properties logically ORed together
 glutWindowSize in pixels
 glutWindowPosition from top-left corner of display
 glutCreateWindow create window with title “simple”
 glutDisplayFunc display callback
 glutMainLoop enter infinite event loop
init.c

black clear color


void init() opaque window
{
glClearColor (0.0, 0.0, 0.0, 1.0);

glColor3f(1.0, 1.0, 1.0); fill/draw with white


glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
}

viewing volume
RGB color
 Each color component is stored separately
in the frame buffer
 Usually 8 bits per component in buffer
 Note in glColor3f the color values range
from 0.0 (none) to 1.0 (all), whereas in
glColor3ub the values range from 0 to
255
Indexed Color

 Colors are indices into tables of RGB values


 Requires less memory
 indices usually 8 bits

 not as important now


 Memory inexpensive
 Need more colors for shading
Color and State
 The color as set by glColor becomes part of
the state and will be used until changed
 Colors and other attributes are not part of
the object but are assigned when the
object is rendered
 We can create conceptual vertex colors by
code such as
glColor
glVertex
glColor
glVertex
Smooth Color
 Default is smooth shading
 OpenGL interpolates vertex colors across
visible polygons
 Alternative is flat shading
 Color of first vertex

determines fill color


 glShadeModel
(GL_SMOOTH)
or GL_FLAT
Rangkuman
 API berfungsi sebagai perantara
antara aplikasi dengan hardware
 Membuat tampilan 2 dimensi
sederhana menggunakan OpenGL
 Penjelasan Fungsi-fungsi dasar
pembentuk program OpenGL
Contoh Soal
Buat tampilan sebagai berikut:
Jawaban
#include "stdafx.h"
#include <GL/glut.h>

void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES);

glClearColor(1.0,1.0,1.0,1.0);
glColor3f(1.0,0.0,0.0);
glVertex3f(-2.0,-2.0,0.0);
glClearColor(1.0,1.0,1.0,1.0);
glColor3f(0.0,1.0,0.0);
glVertex3f(0.0,2.0,0.0);
glClearColor(1.0,1.0,1.0,1.0);
glColor3f(0.0,0.0,1.0);
glVertex3f(2.0,-2.0,0.0);

glEnd();
glFlush();
}
void myinit()
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-2.0,2.0,-2.0,2.0);
glMatrixMode(GL_MODELVIEW);
glClearColor(1.0,1.0,1.0,1.0);
glColor3f(0.0,0.0,0.0);
}

int main(int argc, char* argv[])


{
if (argv[1] != NULL)
{ n=atoi(argv[1]);
}
else n=5;
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(500,500);
glutInitWindowPosition(100,100);
glutCreateWindow("Segitiga Warna");
glutDisplayFunc(display);
myinit();
glutMainLoop();

return 0;
}
Contoh Soal
Buatlah tampilan program
Sierpinski Gasket
Referensi
 Edward Angel, “Interactive
Computer Graphics Fourth
Edition”, Pearson, 2006, ch 2, p 46
– 84
 F. S. Hill, Jr., “Computer Graphics
Using OpenGL Second Edition”,
Prentice Hall, 2001, ch 2, p 39 - 63

You might also like