Download as pdf or txt
Download as pdf or txt
You are on page 1of 36

TNG QUAN OPENGL

TH CHI

OpenGL l g?
L mt giao din gia phn mm vi phn cng ha. Mt giao din lp trnh ha 3D ( khong 150 hm). c lp vi phn cng. Nhanh C tnh m http://www.opengl.org

Nn ng dng ca OpenGL

Lch s ca OpenGL

ng dng ca Opengl
Computer Aided Design(CAD) Computer Aided Manufacturing Architecture Simulation Virtual Reality Visualization Games Movies Medical Imaging

CAD

Movies

Games

Visualization

Virtual Reality

Mobile media

New information spaces

ha my tnh

Raster Graphics: nh c to ra t cc d liu im nh

Vector Graphics: nh c to ra t cc khi hnh c bn: im, ng thng, ng cong, v cc khi hnh khc.

X l ha

Kin trc ca Opengl

Libraries and Headers


Library Name Library File
OpenGL Opengl32.lib

Header File
Gl.h

Note
V v x l hnh 2D, 3D c bn H tr camera v cc hnh phc tp - Qun l window - Display callback - Nhp xut -V mt s i tng 3D phc tp

Th vin h tr Cng c tin ch

Glu32.lib

Glu.h

Glut32.lib Glaux.lib

Glut.h Glaux.h

C php t tn

glColor3f() = gl Color 3 f()

Th vin

Hm c bn

S lng i s

Kiu d liu

Cc hm ca OpenGL bt u vi tin t gl Cc hm tin ch bt u vi tin t glu Kiu d liu bt u vi tin t GL Cc hng s c vit hoa v bt u vi tin t GL_ V d: glVertex2f() GL_COLOR_BUFFER_BIT

Bng d liu, hu t trong OpenGL


Hu t
B S

Kiu d liu
8-bit integer 16-bit integer

Tng ng kiu d liu C


signed char Short

Tng ng kiu d liu OpenGL


Glbyte Glshort

I
F D Ub

32-bit integer
32-bit floating-point 64-bit floating-point 8-bit unsigned integer

int or long
Float Double unsigned char

GLint, Glsizei
GLfloat, Glclampf GLdouble, GLclampd

GLubyte, GLboolean GLushort


GLuint, GLenum, GLbitfield

Us
Ui

16-bit unsigned integer


32-bit unsigned integer

unsigned short
unsigned int or unsigned long

Cc lnh t trong glBegin/glEnd

glVertex*() : thit lp cc im glColor*() : thit lp mu hin ti glIndex*() : thit lp ch s mu hin ti glNormal*() : nh sng glTexCoord*() : Texture glMaterial*()

OpenGL API Functions


1. Cc hnh c bn im, ng thng, a gic, bitmap hoc nh 2. Php bin i Xoay, tnh tin, co dn, php chiu 3. M hnh mu RGB, RGBA, ch s 4. Vt liu, nh sng, to bng 5. B m 6. Kt cu demo opengl\simpleGLUT\simpleGLUT.exe vidu\Marble\Marble.exe

Khi c bn
Tt c cc khi hnh xc nh bi cc vector

GL_POINTS

GL_LINES GL_LINE_STRIP

GL_LINE_LOOP

GL_POLYGON

GL_TRIANGLES

GL_TRIANGLE_STRIP
GL_TRIANGLE_FAN

GL_QUADS GL_QUAD_STRIP

Points

glBegin(GL_POINTS); glVertex2fv(p0); glVertex2fv(p1); glVertex2fv(p2); glVertex2fv(p3); glVertex2fv(p4); glVertex2fv(p5); glVertex2fv(p6); glVertex2fv(p7); glEnd();

p7 p6 p5

p0 p1 p2

p3
p4

Line Segments

glBegin(GL_LINES); glVertex2fv(p0); glVertex2fv(p1); glVertex2fv(p2); glVertex2fv(p3); glVertex2fv(p4); glVertex2fv(p5); glVertex2fv(p6); glVertex2fv(p7); glEnd();

p0 p7 p1

p6

p2

p5

p3

p4

Polylines Line Strip

glBegin(GL_LINE_STRIP); glVertex2fv(p0); glVertex2fv(p1); glVertex2fv(p2); glVertex2fv(p3); glVertex2fv(p4); glVertex2fv(p5); glVertex2fv(p6); glVertex2fv(p7); glEnd();

p0 p7 p1

p6

p2

p5

p3

p4

Polylines Line Loop

glBegin(GL_LINE_LOOP); glVertex2fv(p0); glVertex2fv(p1); glVertex2fv(p2); glVertex2fv(p3); glVertex2fv(p4); glVertex2fv(p5); glVertex2fv(p6); glVertex2fv(p7); glEnd();

p0 p7 p1

p6

p2

p5

p3

p4

Polygon

glBegin(GL_POLYGON); glVertex2fv(p0); glVertex2fv(p1); glVertex2fv(p2); glVertex2fv(p3); glVertex2fv(p4); glVertex2fv(p5); glVertex2fv(p6); glVertex2fv(p7); glEnd();

p0 p7 p1

p6

p2

p5

p3

p4

Quadrilaterals

glBegin(GL_QUADS); glVertex2fv(p0); glVertex2fv(p1); glVertex2fv(p2); glVertex2fv(p3); glVertex2fv(p4); glVertex2fv(p5); glVertex2fv(p6); glVertex2fv(p7); glEnd();

p0 p7 p1

p6

p2

p5

p3

p4

Quadstrip

glBegin(GL_QUAD_STRIP); glVertex2fv(p1); glVertex2fv(p2); glVertex2fv(p3); glVertex2fv(p0); glVertex2fv(p4); glVertex2fv(p7); glVertex2fv(p5); glVertex2fv(p6); glEnd();

p0 p7 p1

p6

p2

p5

p3

p4

Triangles

glBegin(GL_TRIANGLES); glVertex2fv(p0); glVertex2fv(p1); glVertex2fv(p2); glVertex2fv(p3); glVertex2fv(p4); glVertex2fv(p5); glVertex2fv(p6); glVertex2fv(p7); glEnd();

p0 p7 p1

p6

p2

p5

p3

p4

Triangle Strip

glBegin(GL_TRIANGLE_STRIP); glVertex2fv(p0); glVertex2fv(p7); glVertex2fv(p1); glVertex2fv(p6); glVertex2fv(p2); glVertex2fv(p5); glVertex2fv(p3); glVertex2fv(p4); glEnd();

p0 p7 p1

p6

p2

p5

p3

p4

Triangle Fan

glBegin(GL_TRIANGLE_FAN); glVertex2fv(p0); glVertex2fv(p1); glVertex2fv(p2); glVertex2fv(p3); glVertex2fv(p4); glVertex2fv(p5); glVertex2fv(p6); glVertex2fv(p7); glEnd();

p0 p7 p1

p6

p2

p5

p3

p4

Ci t th vin trn Windows

Cu trc chng trnh OpenGL n gin


1. Cu hnh GL/GLUT To window, kiu hin th 2. Khi to trng thi Mu nn, nh sng, hng nhn 3. ng k cc hm s kin Hin th, thay i kch thc ca s, hot hnh, tng tc chut, bn phm 4. Qu trnh lp glutMainLoop()

Chng trnh OpenGL n gin


int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); glutInitWindowSize (250, 250); glutInitWindowPosition (100, 100); glutCreateWindow ("hello"); init (); glutDisplayFunc(display); glutReshapeFunc(resize); glutIdleFunc( idle ); glutKeyboardFunc(key); glutMouseFunc(mouse); glutMainLoop(); return 0; }

Khi to ca s
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); viewing volume

black clear color

fill/draw with white

To Project u tin

You might also like