opengl help session cs248 fall 2008 derek chan. opengl needs a windowing system opengl by itself...

Post on 15-Jan-2016

217 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

OpenGL Help SessionCS248 Fall 2008

Derek Chan

OpenGL needs a windowing system

• OpenGL by itself does not talk to the windowing system/manager by itself.

• Need a toolkit to tell the windowing system that we need an OpenGL window.

• Examples:

• GLUT/ GLUI (used in Project 2)

• SDL (more features: sound, image file loaders)

• wxWidgets, Qt (full fledged widget toolkits, probably overkill for a game)

OpenGL needs a windowing system

• What does the windowing toolkit handle?

• Opening a window in the OS

• Window resizing

• Mouse/ keyboard presses

• Mouse position/movement

• What does OpenGL do? - draw

Drawing

•glBegin():

•GL_POINTS

•GL_LINES

•GL_TRIANGLES

•Etc.

Drawing

•glBegin(GL_LINES);

•glColor3f(r,g,b);

•glNormal3f(x,y,z);

•glTexCoord2d(u,v);

•glVertex3f(x,y,z);

•glEnd();

OpenGL function suffixes

•OpenGL functions that take different types of arguments while providing the same functionality will often have a suffix to denote which type of function they are:

•glVertex2i - input is 2 integers

•glVertex3fv - input is 3 floats in an array

•glVertex3f - input is 3 floats

OpenGL Camera

•glFrustrum

•gluPerspective

•glOrtho

•gluOrtho2d

•glViewport

•gluLookAt

OpenGL

•glEnable( )

•glDisable( )

•GL_DEPTH_TEST

•GL_BLEND

•GL_LIGHTING

•GL_LIGHT1

OpenGL

•Find simple tutorials online

•OpenGL does many things which you might not know about

•Display Lists (glGenLists, glCallList)

OpenGL extensions

•Extensions to the OpenGL base system often have their own suffixes. For example:

•glCreateProgramObjectARB(to create a shader program using an ARB extension)

•Use GLEW (OpenGL Extension Wrangler) for easy access to extensions.

Basic OpenGL Game Flowchart

1.Load up an OpenGL window using a toolkit to talk to the windowing system

•Set up projection matrices, shading properties, etc. Load textures, etc.

•Event loop:

•Check for any events or user input and process them

•Redraw the OpenGL scene as necessary

•Wait a small amount of time.

General Programming Advice

1. have a math library

1. use object oriented programming

1. use c++ stl classes (or equivalent)

Example Pitfalls

• Depth Testing vs blending (transperancies)

• Texture dimensions – power of 2(fixed in more recent implementations of OpenGL)

• Projection matrix should only be used for camera position, etc. It has a shorter stack than the Model-View matrix.

top related