pemrograman opengl dasar l.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Pemrograman OpenGL Dasar PowerPoint Presentation
Download Presentation
Pemrograman OpenGL Dasar

Loading in 2 Seconds...

play fullscreen
1 / 34

Pemrograman OpenGL Dasar - PowerPoint PPT Presentation


  • 417 Views
  • Uploaded on

Pemrograman OpenGL Dasar. Pertemuan 5. Hand out Komputer Grafik. TIU: Mahasiswa mampu menghasilkan aplikasi Komputer Grafik sederhana. (4) Mampu menghasilkan aplikasi pengolah grafis yang memiliki kemampuan mentransformasi obyek vektor dan berinteraksi dengan pengguna (C5,P3). (5)

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

Pemrograman OpenGL Dasar


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
pemrograman opengl dasar

Pemrograman OpenGL Dasar

Pertemuan 5

Hand out Komputer Grafik

slide2

TIU:

Mahasiswa mampu menghasilkan aplikasi Komputer Grafik sederhana

(4)

Mampu menghasilkan aplikasi pengolah grafis yang memiliki kemampuan mentransformasi obyek vektor dan berinteraksi dengan pengguna (C5,P3)

(5)

Mampu menghasilkan aplikasi pengolah grafis yang memiliki kemampuan mengatur viewing dan shading (C5,P3)

(3)

Mampu menganalisa aplikasi pengolah grafis yang menampilkan gambar 2 dimensi (C4,P3)

(2)

Mampu menggunakan aplikasi pengolah grafis 3D untuk membuat animasi 3 dimensi sederhana (C3,P3)

(1)

Mampu menjelaskan konsep dasar grafika di komputer (C2)

Entry Behaviour

Memahami konsep Vektor, Persamaan Linier, Matrik, dan Determinan

Memahami konsep pemrograman berorientasi Obyek

bahasan
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
the programmer s interface
The Programmer’s Interface
  • Programmer sees the graphics system through a software interface: the Application Programmer Interface (API)
api contents
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
object specification
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 aredefined through locations in space or vertices
opengl
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 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
slide9
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
Software Organization

application program

OpenGL Motif

widget or similar

GLUT

GLX, AGLor WGL

GLU

GL

X, Win32, Mac O/S

software and/or hardware

opengl function format
OpenGL function format

function name

dimensions

glVertex3f(x,y,z)

x,y,zare floats

belongs to GL library

glVertex3fv(p)

pis a pointer to an array

example
Example

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( );

type of object

location of vertex

end of object definition

opengl primitives
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

a simple program
A Simple Program

Generate a square on a solid background

simple c
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
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)
  • include files also define OpenGL data types: GLfloat, GLdouble,….
event loop
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
latihan
Latihan

Buatlah Program yang menampilkan kotak diatas

defaults
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
program structure
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
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
main.c

#include <GL/glut.h>

int main(int argc, char** argv)

{

glutInit(&argc,argv);

glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);

glutInitWindowSize(500,500);

glutInitWindowPosition(0,0);

glutCreateWindow("simple");

glutDisplayFunc(mydisplay);

init();

glutMainLoop();

}

includesgl.h

define window properties

display callback

set OpenGL state

enter event loop

glut functions
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
init.c

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);

}

black clear color

opaque window

fill/draw with white

viewing volume

rgb color
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
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
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
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
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
Contoh Soal

Buat tampilan sebagai berikut:

jawaban
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();

}

slide32
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 soal33
Contoh Soal

Buatlah tampilan program Sierpinski Gasket

referensi
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