130 likes | 245 Views
OpenGL Help Session. CS248 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)
E N D
OpenGL Help Session CS248 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 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 have a math library use object oriented programming 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.