0% found this document useful (0 votes)
76 views22 pages

Write A Simple Program With Opengl & Glut

This document provides information on writing simple programs with OpenGL and GLUT (OpenGL Utility Toolkit). It discusses setting up the development environment, including needed libraries and files. It then demonstrates a basic OpenGL program structure using GLUT functions to initialize windows, handle events, and draw objects. It also summarizes common GLUT functions and objects for window handling, callbacks, and primitive shapes.

Uploaded by

Kyle Thomas
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
76 views22 pages

Write A Simple Program With Opengl & Glut

This document provides information on writing simple programs with OpenGL and GLUT (OpenGL Utility Toolkit). It discusses setting up the development environment, including needed libraries and files. It then demonstrates a basic OpenGL program structure using GLUT functions to initialize windows, handle events, and draw objects. It also summarizes common GLUT functions and objects for window handling, callbacks, and primitive shapes.

Uploaded by

Kyle Thomas
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 22

Write a Simple Program with OpenGL & GLUT

Books

Books

OpenGL Programming Guide (Red-book) OpenGL Reference Manual (Blue-book) OpenGL Super Bible

http://www.glprogramming.com/red/ http://www.glprogramming.com/blue/

Web

http://www.opengl.org/

Be Prepared

Windows XP, vista, 7 or any other Windows Microsoft Visual Studio

ftp://ca.nctu.edu.tw http://www.opengl.org/resources/libraries/glut/

GLUT

OpenGL Utility Toolkit (GLUT)

A window system-independent toolkit to hide the complexity of differing window system APIs. Providing following operations:

Initializing and creating window Handling window and input events Drawing basic 3D objects Running the program

How to Use GLUT?

Put these 3 files in your project directory. glut.h (Include it!) glut32.lib (Link it!) glut32.dll (Execute with it!)

A Simple OpenGL Program

1/4

#include glut.h void display(); void reshape(GLsizei, GLsizei); int main(int argc, char** argv){ glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutCreateWindow("sample"); glutDisplayFunc(display); glutReshapeFunc(reshape); glutMainLoop(); return 0; }

A Simple OpenGL Program


void display(){ glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0f, 1.0f, 1.0f); glutSolidTeapot(1.0); glFlush(); }

2/4

A Simple OpenGL Program

3/4

void reshape(GLsizei w, GLsizei h){ glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glFrustum(-0.5, 0.5, -0.5, 0.5, 1.0, 20.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); }

A Simple OpenGL Program

4/4

GLUT Functions

1/7

void glutInit(int *argcp, char **argv);


Initializing the GLUT library Should be called before any other GLUT funcitons
http://www.opengl.org/resources/libraries/glut/spec3/node10.html

void glutInitDisplayMode(unsigned int mode);


Specify a display mode for windows created. GLUT_RGB / GLUT_RGBA / GLUT_INDEX GLUT_SINGLE / GLUT_DOUBLE GLUT_DEPTH / GLUT_STENCIL / GLUT_ACCUM
http://www.opengl.org/resources/libraries/glut/spec3/node12.html

GLUT Functions

2/7

void glutInitWindowSize(int width, int height); void glutInitWindowPosition(int x, int y);

Initializing the window position and size.


http://www.opengl.org/resources/libraries/glut/spec3/node11.html

int glutCreateWindow(char *name);

Open a window with previous settings.


http://www.opengl.org/resources/libraries/glut/spec3/node16.html#383

GLUT Functions

3/7

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


Called whenever the contents of the windows need to be redrawn. Put whatever you wish to draw on screen here. Use glutPostRedisplay() to manually ask GLUT to recall this display function
http://www.opengl.org/resources/libraries/glut/spec3/node46.html

GLUT Functions

4/7

void glutReshapeFunc(void (*func)(int width, int height));

Called whenever the window is resized or moved. You should always call glViewport() here to resize your viewport.
http://www.opengl.org/resources/libraries/glut/spec3/node48.html

GLUT Functions

5/7

void glutKeyboardFunc(void (*func)(unsigned char key, int x, int y));

Sets the keyboard callback for the current window.


http://www.opengl.org/resources/libraries/glut/spec3/node49.html

void glutIdleFunc(void (*func)(void));

Sets the global idle callback.


http://www.opengl.org/resources/libraries/glut/spec3/node63.html

GLUT Functions

6/7

void glutMouseFunc(void (*func)(int button, int state, int x, int y));


sets the mouse callback for the current window.
http://www.opengl.org/resources/libraries/glut/spec3/node50.html

void glutMotionFunc(void (*func)(int x, int y));

set the motion callbacks respectively for the current window.


http://www.opengl.org/resources/libraries/glut/spec3/node51.html

GLUT Functions

7/7

void glutMainLoop(void);

Enter the GLUT processing loop and never return.


http://www.opengl.org/resources/libraries/glut/spec3/node14.html#376

void glutPostRedisplay(void);

marks the current window as needing to be redisplayed.


http://www.opengl.org/resources/libraries/glut/spec3/node20.html#465

GLUT Objects

GLUT provides the follow objects:

Sphere, cube, torus, icosahedron, ocrtahedron, tetrahedron, teapot, dodecahedron, cone. Both wireframe and solid Ex: glutSolidSphere(1.0, 24, 24) Ex: glutWireCube(1.0)
http://www.opengl.org/resources/libraries/glut/spec3/node80.html#SECTION000120000000000000000

Appendix: Example of Keyboard Callback Function


void keyboard(unsigned char key, int x, int y){ printf("you press the key %c \n", key); printf("the mouse is on %d %d \n", x, y); }

Appendix: Example of Mouse Callback Function


int startX, startY; void mouse(int button, int state, int x, int y){ if (state == GLUT_DOWN){ startX = x; startY = y; } else if(state == GLUT_UP){ printf("the mouse moves %d %d \n", x - startX, y - startY); } }

Appendix: Example of Motion Callback Function


void motion(int x, int y){ printf("the mouse is moving to %d %d", x, y); }

You might also like