openGL

erectboboSoftware and s/w Development

Dec 14, 2013 (3 years and 3 months ago)

64 views

OPEN
GL

-

Bipindra Bir Shrestha

A
GENDA


Introduction to OpenGL


Demo


Programming in OpenGL


Demo


References



W
HAT

IS

O
PEN
GL?



An application programmer’s
interface (API) that allows
programmers to write programs that
access graphics hardware.


B
ENEFITS





It is close enough to hardware so that programs
written with OpenGL run efficiently



It is easy to learn and use.

T
HREE

V
IEWS

OF

O
PEN
GL

1.
Programmer’s View


2.
The OpenGL State Machine


3.
The OpenGL Pipeline


T
HE

PROGRAMMER

S

V
IEW



Specify Geometric Objects


Describing properties of these objects


Defining how these objects should be viewed

T
HE

O
PEN
GL S
TATE

MACHINE

Application
Program

OpenGL

Display

Function

Call

Pixels

T
HE

O
PEN
GL P
IPELINE

Primitives

Transformer

Clipper

Projector

Rasterizer

Pixels

O
PEN
GL F
UNCTIONS



Primitive functions


Geometric : polygons


Discrete : bitmap


Attribute functions


Control attribute of primitives.
Eg

color, line type, light
sources , textures


Viewing functions


Determine properties of Camera.


Input functions


Allow us to control windows on the screen and to use the
mouse and keyboard


Control functions


Allow us to start and to terminate OpenGL programs
and to turn on various OpenGL features.

O
PEN
GL V
ERSIONS

AND

E
XTENSIONS


OpenGL is controlled by OpenGL Architectural Review
Board (ARB), which has members from companies such as
SGI,IBM and Microsoft.


Present version is 2.1 . Next version 3.0, release date is not
yet announced due to some issues.


OpenGL is very stable and has lower compatibility.


Extensions: allow vendors to provide additional
functionality through
extensions.


Each vendor has alphabetic abbreviation .


E.g:
glCombinerParameterfvNV() : NV for NVDIA


If many vendors agree on same implementation it
becomes “Standard extension” abbriviated with ARB.


Eg.
GL_ARB_multitexture


L
ANGUAGES


C


C#
: The framework
Tao

for
Microsoft .NET

includes OpenGL
between other multimedia libraries


Delphi
:
Dot
[4]


Fortran
:
f90gl

supports OpenGL 1.2, GLU 1.2 and GLUT 3.7
[5]


Java
:


Java Bindings for OpenGL

(JSR 231) and
Java OpenGL

(JOGL)


Lightweight Java Game Library

(LWJGL)


Lisp
: See
the
cl
-
opengl

project at common
-
lisp.net


Perl
:


Perl OpenGL

(POGL) module
-

shared
libs

written in C


C
vs

Perl and Perl
vs

Python

benchmarks


PHP
: See
http://phpopengl.sourceforge.net/


Python
:
PyOpenGL

supports GL, GLU and GLUT
[8]


Ruby
: See
[9]

-

supports GL, GLU and GLUT


Smalltalk

as seen in
Croquet Project

running on Squeak Smalltalk


Visual Basic
:
ActiveX Control

C
ONFIGURING

V
ISUAL

S
TUDIO

2005


Download GLUT binaries for windows from “Nate Robins”
‘s website

http://www.xmission.com/~nate/glut.html


put the files as







Make sure visual studio
c++

projects links in the
GLUT/
gl
/
glu

libraries.
Goto
:



Menu: “Project
-
> (your
-
project
-
name) Properties”



Tab: “Configuration Properties
-
> Linker
-
> Input”


Under “Additional Dependencies”, add “glut32.lib opengl32.lib glu32.lib”


Under Configuration Properties
-
>C++
-
>General
-
>Additional Include
Directories : add


"C:
\
Program Files
\
Microsoft Visual Studio 8
\
VC
\
PlatformSDK
\
Include"

File

Location

glut32.dll

C:
\
WINDOWS
\
system
\

(or system32)

glut32.lib

C:
\
Program Files
\
Microsoft Visual Studio 2005
\
VC
\
PlatformSDK
\
Lib

glut.h

C:
\
Program Files
\
Microsoft Visual Studio
2005
\
VC
\
PlatformSDK
\
Include
\
gl

DEMO

P
ROGRAMMING

IN

O
PEN
GL
-
1


GLUT


Initialize :


void glutInit( int argc, char ** argv)


Creating a window


int glutCreateWindow(char * title)


Display Function


void glutDisplayFunc(void (*func)(void))


Main Loop


void glutMainLoop()


P
ROGRAMMING

IN

O
PEN
GL
-
2


Drawing a rectangle


glBegin
(
Glenum

mode)


glEnd
()


void
glVertex
{2 3 4}{
sifd
}(Type
xcoordinate
,……)


void
glClear
(
Glbitfield

mask)


void
glFlush
()


Changing GLUT defaults


void
glutInitDisplayMode
(unsigned
int

mode)


void
glutInitWindowSize
(
int

width,int

height)


void
glutInitWindowPosition
(
int

x,
int

y)



P
ROGRAMMING

IN

O
PEN
GL
-
3


Setting Colors


void
glColor
*()


void
glClearColor
(
Glclampf

r,
GLClampf

g,
Glclampf

b,
Glclampf

a )


Two Dimensional Viewing


void gluOrtho2D(
Gldouble

left,
Gldouble

right,
Gldouble

bottom,
Gldouble

top)


Coordinate Systems and Transformation


glMatrixMode
( GL_PROJECTION );


glLoadIdentity
();


Points


glPointSize
(2.0);


Lines


GL_POINTS, GL_LINES, GL_LINE_STRIP, GL_LINE_LOOP


in
glBegin
( GL_LINES );


Enabling OpenGL features


void
glEnable
(
Glenum

feature)


void
glDisable
(
Glenum

feature )


P
ROGRAMMING

IN

O
PEN
GL
-
4


Rectangles


void glRect{ sifd} ( TYPE x1,y1,x2,y2 )


Text


void glutBitMapCharcter( void * font, int
char )


Save the state


void glpushMatrix()


void glPopMatrix()


Viewport


void glViewport( Glint x, GLint y,
Glsizei w, Glsizei h )


I
NTERACTION

AND

ANIMATION



Reshape and Idle Callback


Double buffering


Using keyboard and mouse


Mouse motion


Subwindows and Multiple Windows


T
HREE
-
D
IMENSIONAL

P
ROGRAMMING


Cameras and Objects


Orthographic Projections in OpenGL


Vertex Arrays


Hidden Surface removal


GLUT Objects


T
RANSFORMATION



Translation


Rotation


Scaling


Setting vertices directly


L
IGHTS

AND

M
ATERIALS


Enabling and disabling OpenGL lighting


Specifying Light source


Controlling the Lighting Calculation


Smooth Shading


Transparency


I
MAGES


Pixels and Bitmaps


Displaying a bitmap


Mixing Bitmaps and Geometry


Colors and Masks


Drawing Modes


Reading and Writing Pixels


Selecting Buffers


Luminance


Pixel Zoom


T
EXTURE

M
APPING


Texture Coordinates


Texture Parameters


Applying textures to surface


Minimaps


C
URVES

AND

SURFACES



Bezier Curves and surfaces


One dimensional OpenGL evaluators for Bezier
Curves


Two dimensional evaluators to evaluate
Bernstein polynomials and to form Bezier
surfaces.


DEMO

R
ESOURCES


Official Website :
http://www.opengl.org/


SDK :
http://www.opengl.org/sdk/


Reference pages :
http://www.opengl.org/sdk/docs/man/


GLUT :
http://www.opengl.org/resources/libraries/glut/


Sample Projects at :



http://www.ziyoo.com/