Pemrograman OpenGL Dasar - PowerPoint PPT Presentation

1 / 34
About This Presentation
Title:

Pemrograman OpenGL Dasar

Description:

Pemrograman OpenGL Dasar Pertemuan 5 Hand out Komputer Grafik The Programmer s Interface Programmer sees the graphics system through a software interface: the ... – PowerPoint PPT presentation

Number of Views:212
Avg rating:3.0/5.0
Slides: 35
Provided by: LabJ150
Category:

less

Transcript and Presenter's Notes

Title: Pemrograman OpenGL Dasar


1
Pemrograman OpenGL Dasar
  • Pertemuan 5

Hand out Komputer Grafik
2
(No Transcript)
3
Bahasan
  • Pokok Konsep dan cara pemrograman OpenGL API
    dasar untuk menampilkan grafis 2 dimensi
  • Sub
  • OpenGL API
  • GLUT
  • Primitif dan atributnya
  • Warna
  • Viewing dasar
  • Fungsi program dasar

4
The Programmers Interface
  • Programmer sees the graphics system through a
    software interface the Application Programmer
    Interface (API)

5
API Contents
  • Functions that specify what we need to form an
    image
  • Objects
  • Viewer
  • Light Source(s)
  • Materials
  • Other information
  • Input from devices such as mouse and keyboard
  • Capabilities of system

6
Object Specification
  • Most APIs 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

7
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

8
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

9
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

10
Software Organization
application program
OpenGL Motif widget or similar
GLUT
GLX, AGLor WGL
GLU
GL
X, Win32, Mac O/S
software and/or hardware
11
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
12
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
13
OpenGL Primitives
GL_POINTS
GL_POLYGON
GL_LINE_STRIP
GL_LINES
GL_LINE_LOOP
GL_TRIANGLES
GL_QUAD_STRIP
GL_TRIANGLE_FAN
GL_TRIANGLE_STRIP
14
A Simple Program
  • Generate a square on a solid background

15
simple.c
include ltGL/glut.hgt 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) glutCreateW
indow("simple") glutDisplayFunc(mydisplay)
glutMainLoop()
16
OpenGL defines
  • Most constants are defined in the include files
    gl.h, glu.h and glut.h
  • Note include ltGL/glut.hgt should automatically
    include the others
  • Examples
  • glBegin(GL_POLYGON)
  • glClear(GL_COLOR_BUFFER_BIT)
  • include files also define OpenGL data types
    GLfloat, GLdouble,.

17
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

18
Latihan
  • Buatlah Program yang menampilkan kotak diatas

19
Defaults
  • simple.c is too simple
  • Makes heavy use of state variable default values
    for
  • Viewing
  • Colors
  • Window parameters
  • Next version will make the defaults more explicit

20
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

21
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

22
main.c
includes gl.h
  • include ltGL/glut.hgt
  • int main(int argc, char argv)
  • glutInit(argc,argv)
  • glutInitDisplayMode(GLUT_SINGLEGLUT_RGB)
  • glutInitWindowSize(500,500)
  • glutInitWindowPosition(0,0)
  • glutCreateWindow("simple")
  • glutDisplayFunc(mydisplay)
  • init()
  • glutMainLoop()

define window properties
display callback
set OpenGL state
enter event loop
23
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

24
init.c
black clear color
  • void init()
  • glClearColor (0.0, 0.0, 0.0, 1.0)
  • glColor3f(1.0, 1.0, 1.0)
  • glMatrixMode (GL_PROJECTION)
  • glLoadIdentity ()
  • glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0)

opaque window
fill/draw with white
viewing volume
25
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

26
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

27
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

28
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

29
Rangkuman
  • API berfungsi sebagai perantara antara aplikasi
    dengan hardware
  • Membuat tampilan 2 dimensi sederhana menggunakan
    OpenGL
  • Penjelasan Fungsi-fungsi dasar pembentuk program
    OpenGL

30
Contoh Soal
  • Buat tampilan sebagai berikut

31
Jawaban
  • include "stdafx.h"
  • include ltGL/glut.hgt
  • 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()

32
  • 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 (argv1 ! NULL)
  • natoi(argv1)
  • else n5
  • glutInit(argc,argv)
  • glutInitDisplayMode(GLUT_SINGLE GLUT_RGB)
  • glutInitWindowSize(500,500)

33
Contoh Soal
  • Buatlah tampilan program Sierpinski Gasket

34
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
Write a Comment
User Comments (0)
About PowerShow.com