introduction to opengl and glut
Download
Skip this Video
Download Presentation
Introduction to OpenGL and GLUT

Loading in 2 Seconds...

play fullscreen
1 / 27

Introduction to OpenGL and GLUT - PowerPoint PPT Presentation


  • 108 Views
  • Uploaded on

Introduction to OpenGL and GLUT. What’s OpenGL?. An Application Programming Interface (API) A low-level graphics programming API Contains over 250 functions Developed by Silicon Graphics Inc. (SGI) in 1992 Most recent version: 4.2, released on 08/08/2011. OpenGL Applications. And more….

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

PowerPoint Slideshow about ' Introduction to OpenGL and GLUT' - zenia


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
what s opengl
What’s OpenGL?
  • An Application Programming Interface (API)
  • A low-level graphics programming API
    • Contains over 250 functions
    • Developed by Silicon Graphics Inc. (SGI) in 1992
    • Most recent version: 4.2, released on 08/08/2011
portability
Portability
  • Independent of display devices
  • Independent of window systems
  • Independent of operating systems
  • Device 1:
    • Line(100, 50, 150, 80)
  • Device 2:
    • MoveTo(100, 50)
    • LineTo(150, 80)

(100

(100, 50)

(150, 80)

opengl basics
OpenGL Basics
  • The main use: Rendering.
  • OpenGL can render:
    • Geometric primitives
    • Bitmaps and images

Rendering is the process of generating an image from a model (or models in what collectively could be called a scene file), by means of computer programs.

  • -----Wikipedia
an example
An Example

void Display()

{

glClear(GL_COLOR_BUFFER_BITS);

glColor4f(1, 1, 0, 1);

glBegin(GL_POLYGON);

glVertex2f(-0.5, -0.5);

glVertex2f(-0.5, 0.5);

glVertex2f( 0.5, 0.5);

glVertex2f( 0.5, -0.5);

glEnd();

glutSwapBuffers();

}

primitives
Primitives
  • Primitives are specified as:
  • PrimType:
    • GL_POINTS, GL_LINES, GL_TRIANGLES, …

glBegin(primType);

// your primitive vertices here.

// ...

// ...

glEnd();

an example1
An Example

void Display()

{

glClear(GL_COLOR_BUFFER_BITS);

glColor4f(1, 1, 0, 1);

glBegin(GL_POLYGON);

glVertex2f(-0.5, -0.5);

glVertex2f(-0.5, 0.5);

glVertex2f( 0.5, 0.5);

glVertex2f( 0.5, -0.5);

glEnd();

glutSwapBuffers();

}

(-0.5, 0.5)

(0.5, 0.5)

(-0.5, -0.5)

(0.5, -0.5)

vertices
Vertices

v stands for vectors

glVertex2fv(x, y)

Number of dimensions/components

2: (x, y)

3: (x, y, z) or (r, g, b)

4: (x, y, z, w) or (r, g, b, a)

glVertex2f(x, y)

Format

b: byte

ub: unsigned byte

i: int

ui: unsigned int

f: float

d: double

an example2
An Example

void Draw_Circle()

{

glColor4f(0, 0, 0, 1);

int number = 20; //number of vertices

float radius = 0.8f; //radius

float twoPi = 2.0f * 3.14159f;

glBegin(GL_POLGYON);

for(inti = 0; i <number;i++)

glVertex2f(radius*cosf(i*twoPi/number),

radius*sinf(i*twoPi/number));

glEnd();

}

window based programming
Window-Based Programming
  • Most modern operating systems are windows-based.

Not window-based

Window-based

window based programming1
Window-Based Programming
  • OpenGL is independent of window systems.
    • No functions for window operations, such as creating, resizing, event handling, …
    • This is to ensure portability across different platforms
    • Now we have a problem: OpenGL doesn’t work by itself.
graphics user interfaces
Graphics User Interfaces
  • A Graphics User Interface (GUI) provides functions to:
    • Create windows, sliders, menus, buttons…
    • Resize windows
    • Handle mouse click, keyboard….

GLX for X window system

AGL for Mac

WGL for Microsoft Windows

No portability…

glut opengl utility toolkit
GLUT (OpenGL Utility Toolkit)
  • GLUT provides basic functions to operate windows.
  • GLUT is cross-platform: X window, MS window, and Mac OS.
  • No sliders, no buttons, no menus, …
glut basics
GLUT Basics
  • Program structure:
    • Configure and open a window (GLUT)
    • Initialize OpenGL. (Optional)
    • Register callback functions. (GLUT)
      • Display (OpenGL)
      • Resize (OpenGL)
      • Input/output
    • Enter an event processing loop. (GLUT)
an example3
An Example

#include <GL/glut.h>

void main(intargc, char **argv)

{

int mode=GLUT_RGB|GLUT_DOUBLE;

glutInit(&argc, argv);

glutInitDisplayMode(mode);

glutInitWindowSize(800, 800);

glutCreateWindow(“Hello Graphics World”);

init();

glutDisplayFunc(display);

glutKeyboardFunc(key);

glutMainLoop();

}

an example4
An Example

Display mode: RGB or color index?

Single frame buffer or double?

#include <GL/glut.h>

void main(intargc, char **argv)

{

int mode=GLUT_RGB|GLUT_DOUBLE;

glutInit(&argc, argv);

glutInitDisplayMode(mode);

glutInitWindowSize(800, 800);

glutCreateWindow(“Hello Graphics World”);

init();

glutDisplayFunc(display);

glutKeyboardFunc(key);

glutMainLoop();

}

an example5
An Example

A window with resolution 800*800

#include <GL/glut.h>

void main(intargc, char **argv)

{

int mode=GLUT_RGB|GLUT_DOUBLE;

glutInit(&argc, argv);

glutInitDisplayMode(mode);

glutInitWindowSize(800, 800);

glutCreateWindow(“Hello Graphics World”);

init();

glutDisplayFunc(display);

glutKeyboardFunc(key);

glutMainLoop();

}

an example6
An Example

Create the window with a title:

“hello graphics world”

#include <GL/glut.h>

void main(intargc, char **argv)

{

int mode=GLUT_RGB|GLUT_DOUBLE;

glutInit(&argc, argv);

glutInitDisplayMode(mode);

glutInitWindowSize(800, 800);

glutCreateWindow(“Hello Graphics World”);

init();

glutDisplayFunc(display);

glutKeyboardFunc(key);

glutMainLoop();

}

an example7
An Example

#include <GL/glut.h>

void main(intargc, char **argv)

{

int mode=GLUT_RGB|GLUT_DOUBLE;

glutInit(&argc, argv);

glutInitDisplayMode(mode);

glutInitWindowSize(800, 800);

glutCreateWindow(“Hello Graphics World”);

init();

glutDisplayFunc(display);

glutKeyboardFunc(key);

glutMainLoop();

}

An optional init function

an example8
An Example

#include <GL/glut.h>

void main(intargc, char **argv)

{

int mode=GLUT_RGB|GLUT_DOUBLE;

glutInit(&argc, argv);

glutInitDisplayMode(mode);

glutInitWindowSize(800, 800);

glutCreateWindow(“Hello Graphics World”);

init();

glutDisplayFunc(display);

glutKeyboardFunc(key);

glutMainLoop();

}

Let GLUT know which function to call, when an event happens

an example9
An Example

#include <GL/glut.h>

void main(intargc, char **argv)

{

int mode=GLUT_RGB|GLUT_DOUBLE;

glutInit(&argc, argv);

glutInitDisplayMode(mode);

glutInitWindowSize(800, 800);

glutCreateWindow(“Hello Graphics World”);

init();

glutDisplayFunc(display);

glutKeyboardFunc(key);

glutMainLoop();

}

A loop that waits for events

event driven callbacks
Event-Driven Callbacks
  • Most window-based programs are event-driven:
    • Do nothing until an event happens,
    • Then call the corresponding callback function
  • Events
    • Key press, mouse button click/release, resize, ….
glut display
GLUT Display
  • mydisplayis the name of a function that you will provide.
  • You can use OpenGL to draw something.
  • This function is called when the window needs to be refreshed.
  • You can also signal a display event by youself:

glutPostRedisplay();

glutDisplayFunc(mydisplay);

event queue
Event Queue

glutMainLoop();

Call mouse function

Mouse event

Keyboard event

Display event

Mouse event

some callback functions
Some Callback Functions
  • glutKeyboardFunc
  • glutMouseFunc
  • glutMotionFunc
  • glutSpecialFunc
  • glutIdleFunc
ad