




















Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
An overview of opengl, a graphics library, and its conceptual graphics framework. It discusses the importance of keeping track of graphics states and the pros and cons of using state variables. The document also includes pseudo code examples of drawing lines and triangles using state variables and the concept of bundling and unsetting. Additionally, it touches upon the efficiency considerations and the use of opengl's glgeterror() function.
Typology: Slides
1 / 28
This page cannot be seen from the preview
Don't miss anything!





















Remember…
Graphics System/ GPU Application Model/data base
Software Hardware
Application program
Graphics Library
Pseudo code:
State Variables
What color and shape?
What color and shape?
What color and shape?
Pseudo code:
State Variables
What color and shape?
What color and shape?
What color and shape?
What if…?
What color is the triangle?
State Variables – Pros and Cons
function DrawTriangle (pt1,pt2,p3, int origColor, int curColor, int origStyle, int curStyle ) { SetState( LineStyle, curStyle ); SetState(LineColor, curColor); DrawLine( PtStart=pt1, PtStart=p2 ); DrawLine( PtStart=pt2, PtStart=p3 ); DrawLine( PtStart=pt3, PtStart=p1 ); SetState( LineStyle, origStyle ); SetState(LineColor, origColor); }
State Variables – Pros and Cons
What if I forget to set some state?
What if I set the wrong state?
What if I forget the state a variable is in?
Forgetting the State?
OpenGL provides some good default values. For example, for color, it’s set to (1,1,1,1) – non transparent white
You don’t. Since it’s not clear if some configuration of states will send OpenGL spinning, if you suspect an error from OpenGL, call Glenum glGetError(void)
You should use this sparingly… But you can use void glGetBooleanv(Glenum paraname, Glboolean* params) void glGetFixedv(Glenum paraname, Glfixed* params) void glGetFloatv(Glenum paraname, Glfloat* params) void glGetIntegerv(Glenum paraname, Glint* params)
Forgetting the State?
Questions?
Typical OpenGL Application
int main( int argc, char** argv ) {
glutInit( &argc, argv ); // Boilerplate initialization glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowPosition( 50, 50 ); //upper left glutInitWindowSize( 640, 480 ); // width, height, in pixels glutCreateWindow( "OpenGL Example" ); // window title
glViewport( /* lower left corner of the viewport / 0, 0, / width, height of the viewport */ 640, 480 ); //lower left
Example OpenGL Application
What’s going on here?
Example OpenGL Application
#define GLUT_RGB 0 #define GLUT_RGBA GLUT_RGB #define GLUT_INDEX 1 #define GLUT_SINGLE 0 #define GLUT_DOUBLE 2 #define GLUT_ACCUM 4 #define GLUT_ALPHA 8 #define GLUT_DEPTH 16 #define GLUT_STENCIL 32 #if {GLUT_API_VERSION >= 2} #define GLUT_MULTISAMPLE 128 #define GLUT_STEREO 256 #endif #if {GLUT_API_VERSION >= 3} #define GLUT_LUMINANCE 512 #endif
int main( int argc, char** argv ) { glutInit( &argc, argv ); // Boilerplate initialization glutInitDisplayMode( GLUT_RGB | GLUT_DEPTH ); glutInitWindowPosition( 50, 50 ); //upper left glutInitWindowSize( 640, 480 ); // width, height, in pixels glutCreateWindow( "OpenGL Example" ); // window title glViewport( /* lower left corner of the viewport / 0, 0, / width, height of the viewport */ 640, 480 ); //lower left glShadeModel( GL_SMOOTH ); glPolygonMode( GL_FRONT, GL_FILL ); setupLighting(); setupCamera(640, 480); registerCallBacks(); glutMainLoop();
}
Example OpenGL Application
Asks OpenGL to render with smooth (Gouraud) shading. Other option is GL_FLAT
int main( int argc, char** argv ) { glutInit( &argc, argv ); // Boilerplate initialization glutInitDisplayMode( GLUT_RGB | GLUT_DEPTH ); glutInitWindowPosition( 50, 50 ); //upper left glutInitWindowSize( 640, 480 ); // width, height, in pixels glutCreateWindow( "OpenGL Example" ); // window title glViewport( /* lower left corner of the viewport / 0, 0, / width, height of the viewport */ 640, 480 ); //lower left glShadeModel( GL_SMOOTH ); glPolygonMode( GL_FRONT, GL_FILL ); setupLighting(); setupCamera(640, 480); registerCallBacks(); glutMainLoop();
}
Example OpenGL Application
Asks OpenGL to render fill the polygons but only in the front-facing side Options are GL_BACK, GL_FRONT_AND_BACK, and GL_POINT, GL_LINE, GL_FILL