opengl - linköping universitywebstaff.itn.liu.se/~jimjo/courses/tncg14-2010/documents/... · 2010....
TRANSCRIPT
![Page 1: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/1.jpg)
OpenGL
JimmyJohansson
C‐Research
LinköpingUniversity
![Page 2: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/2.jpg)
Background
• So?wareinterfacetographicshardware• 250+commands• Objects(models)arebuiltfromgeometricprimiKves
• Points,lines,trianglesandpolygons
• CurrentVersions• 2.x• 3.x
![Page 3: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/3.jpg)
Background
• Portability• Fastrendering• Onlythecore
• Otherfeaturesareavailableelsewhere• GLU,GLUT,GLEW,GLUI
![Page 4: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/4.jpg)
TheStateMachine
• Noobjectorienteddesign
• Statemachine• Setstatesandparameters
• Executecommands
• States• Transformmode• Renderingmode
• Errorstate
![Page 5: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/5.jpg)
TheStateMachine
• glEnableandglDisable• e.g.:GL_LIGHTING,GL_DEPTH_TEST
• Errorcontrolandfeedback• glGetError
• Parameters• Colour,normal,texture,lighKng
![Page 6: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/6.jpg)
APIConvenKons
• FuncKonnamesbeginwithglandusemixedcase:glBegin, glEnd, glFrontFace
• ConstantsbeginwithGL_anduseonlyuppercase:GL_TRIANGLES, GL_BACK, GL_LIGHT0
• TypesbeginwithGLanduseonlylowercase:GLbyte, GLubyte, GLint, GLfloat, ...
![Page 7: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/7.jpg)
APIconvenKons:FuncKonnamesshowarguments
• GlVertex{234}{sifd}[v]() • glVertex3i(Glint x,Glint y,Glint z) • glVertex3fv(Glfloat *v)
• argumenttypes:• GLbyte,GLshort,GLint,GLfloat,GLdouble• unsignedbyte(ub),short(us),int(ui)
• vindicatesvector
![Page 8: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/8.jpg)
ExamplefuncKonnames
• glVertex3f(1.0,2.0,3.142);
• glVertex3dv(dvec);• GLdoubledvec[3]={1.0,2.0,3.142};
![Page 9: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/9.jpg)
GLPrimiKves• Points
GL_POINTS• Lines
GL_LINES, GL_LINE_STRIP, GL_LINE_LOOP• Triangles
GL_TRIANGLES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN
• QuadrilateralsandallotherpolygonsGL_QUADS, GL_QUAD_STRIP, GL_POLYGON
![Page 10: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/10.jpg)
GLPrimiKves
![Page 11: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/11.jpg)
Example
#include <whateverYouNeed.h>
main() {
InitializeAWindowPlease(); glClearColor (0.0, 0.0, 0.0, 0.0); glClear (GL_COLOR_BUFFER_BIT); glColor3f (1.0, 1.0, 1.0); glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0); glBegin(GL_POLYGON);
glVertex3f (0.25, 0.25, 0.0); glVertex3f (0.75, 0.25, 0.0); glVertex3f (0.75, 0.75, 0.0); glVertex3f (0.25, 0.75, 0.0);
glEnd(); glFlush(); UpdateTheWindowAndCheckForEvents(); }
![Page 12: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/12.jpg)
Example
#include <whateverYouNeed.h>
main() {
InitializeAWindowPlease(); glClearColor (0.0, 0.0, 0.0, 0.0); glClear (GL_COLOR_BUFFER_BIT); glColor3f (1.0, 1.0, 1.0); glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0); glBegin(GL_POLYGON);
glVertex3f (0.25, 0.25, 0.0); glVertex3f (0.75, 0.25, 0.0); glVertex3f (0.75, 0.75, 0.0); glVertex3f (0.25, 0.75, 0.0);
glEnd(); glFlush(); UpdateTheWindowAndCheckForEvents(); }
![Page 13: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/13.jpg)
Example
#include <whateverYouNeed.h>
main() {
InitializeAWindowPlease(); glClearColor (0.0, 0.0, 0.0, 0.0); glClear (GL_COLOR_BUFFER_BIT); glColor3f (1.0, 1.0, 1.0); glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0); glBegin(GL_POLYGON);
glVertex3f (0.25, 0.25, 0.0); glVertex3f (0.75, 0.25, 0.0); glVertex3f (0.75, 0.75, 0.0); glVertex3f (0.25, 0.75, 0.0);
glEnd(); glFlush(); UpdateTheWindowAndCheckForEvents(); }
![Page 14: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/14.jpg)
Example
#include <whateverYouNeed.h>
main() {
InitializeAWindowPlease(); glClearColor (0.0, 0.0, 0.0, 0.0); glClear (GL_COLOR_BUFFER_BIT); glColor3f (1.0, 1.0, 1.0); glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0); glBegin(GL_POLYGON);
glVertex3f (0.25, 0.25, 0.0); glVertex3f (0.75, 0.25, 0.0); glVertex3f (0.75, 0.75, 0.0); glVertex3f (0.25, 0.75, 0.0);
glEnd(); glFlush(); UpdateTheWindowAndCheckForEvents(); }
![Page 15: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/15.jpg)
Example
#include <whateverYouNeed.h>
main() {
InitializeAWindowPlease(); glClearColor (0.0, 0.0, 0.0, 0.0); glClear (GL_COLOR_BUFFER_BIT); glColor3f (1.0, 1.0, 1.0); glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0); glBegin(GL_POLYGON);
glVertex3f (0.25, 0.25, 0.0); glVertex3f (0.75, 0.25, 0.0); glVertex3f (0.75, 0.75, 0.0); glVertex3f (0.25, 0.75, 0.0);
glEnd(); glFlush(); UpdateTheWindowAndCheckForEvents(); }
![Page 16: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/16.jpg)
Example
#include <whateverYouNeed.h>
main() {
InitializeAWindowPlease(); glClearColor (0.0, 0.0, 0.0, 0.0); glClear (GL_COLOR_BUFFER_BIT); glColor3f (1.0, 1.0, 1.0); glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0); glBegin(GL_POLYGON);
glVertex3f (0.25, 0.25, 0.0); glVertex3f (0.75, 0.25, 0.0); glVertex3f (0.75, 0.75, 0.0); glVertex3f (0.25, 0.75, 0.0);
glEnd(); glFlush(); UpdateTheWindowAndCheckForEvents(); }
![Page 17: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/17.jpg)
Example
#include <whateverYouNeed.h>
main() {
InitializeAWindowPlease(); glClearColor (0.0, 0.0, 0.0, 0.0); glClear (GL_COLOR_BUFFER_BIT); glColor3f (1.0, 1.0, 1.0); glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0); glBegin(GL_POLYGON);
glVertex3f (0.25, 0.25, 0.0); glVertex3f (0.75, 0.25, 0.0); glVertex3f (0.75, 0.75, 0.0); glVertex3f (0.25, 0.75, 0.0);
glEnd(); glFlush(); UpdateTheWindowAndCheckForEvents(); }
![Page 18: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/18.jpg)
Example
#include <whateverYouNeed.h>
main() {
InitializeAWindowPlease(); glClearColor (0.0, 0.0, 0.0, 0.0); glClear (GL_COLOR_BUFFER_BIT); glColor3f (1.0, 1.0, 1.0); glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0); glBegin(GL_POLYGON);
glVertex3f (0.25, 0.25, 0.0); glVertex3f (0.75, 0.25, 0.0); glVertex3f (0.75, 0.75, 0.0); glVertex3f (0.25, 0.75, 0.0);
glEnd(); glFlush(); UpdateTheWindowAndCheckForEvents(); }
![Page 19: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/19.jpg)
Rendering
• Vertex‐by‐vertex• Begingeometrystate• PutverKces• Endgeometrystate
• Arrayofdata• Vertexpointer• Drawarrays• Drawelements
![Page 20: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/20.jpg)
Vertexbyvertex
glBegin(GL_TRIANGLES); /* First Triangle */ glVertex3f( 1.0, 0.0, 0.0); glVertex3f(-0.5, 1.0, 0.5); glVertex3f( 0.0,-0.5,-0.2);
/* Second Triangle */ glVertex3f( 1.0,-0.4, 0.0); glVertex3f( 0.0, 0.6, 0.0); glVertex3f(-0.6,-0.2, 0.4);
glEnd();
![Page 21: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/21.jpg)
glBegin(GL_QUAD_STRIP); /* First quad */ glVertex3f(-0.5,-0.5,-0.5); glVertex3f(-0.5, 0.5,-0.5); glVertex3f( 0.5,-0.5,-0.5); glVertex3f( 0.5, 0.5,-0.5);
/* Second */ glVertex3f( 0.5,-0.5, 0.5); glVertex3f( 0.5, 0.5, 0.5);
/* Third */ glVertex3f(-0.5,-0.5, 0.5); glVertex3f(-0.5, 0.5, 0.5);
/* Fourth */ glVertex3f(-0.5,-0.5,-0.5); glVertex3f(-0.5, 0.5,-0.5);
glEnd();
Vertexbyvertex
![Page 22: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/22.jpg)
static GLfloat vertices[] = { 1.0, 0.0, 0.0, -0.5, 1.0, 0.5, 0.0,-0.5,-0.2, 1.0,-0.4, 0.0, 0.0, 0.6, 0.0, -0.6,-0.2, 0.4 };
glVertexPointer( 3, GL_FLOAT, 0, vertices ); glEnableClientState(GL_VERTEX_ARRAY); glDrawArrays( GL_TRIANGLES, 0, 6 ); glDisableClientState(GL_VERTEX_ARRAY);
ArrayofData
![Page 23: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/23.jpg)
static GLfloat vertices[] = { 1.0, 0.0, 0.0, -0.5, 1.0, 0.5, 0.0,-0.5,-0.2, 1.0,-0.4, 0.0, 0.0, 0.6, 0.0, -0.6,-0.2, 0.4 };
static GLubyte indices[] = { 0, 1, 2, 3, 4, 5 };
glVertexPointer( 3, GL_FLOAT, 0, vertices ); glEnableClientState(GL_VERTEX_ARRAY); glDrawElements( GL_TRIANGLES, 6, GL_UNSIGNED_BYTE, indices );
glDisableClientState(GL_VERTEX_ARRAY);
ArrayofData
![Page 24: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/24.jpg)
OpenGLBlockDiagram
FRAME BUFFER
RASTERIZ- ATION EVALUATOR
TEXTURE MEMORY
PIXEL OPS
PER-VERTEX OPS
PRIMITIVE ASSEMBLY
PER-FRAG OPS
![Page 25: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/25.jpg)
OpenGLBlockDiagram
FRAME BUFFER
RASTERIZ- ATION EVALUATOR
TEXTURE MEMORY
PIXEL OPS
PER-VERTEX OPS
PRIMITIVE ASSEMBLY
PER-FRAG OPS
Handles parametric shapes, derives vertices from control points
![Page 26: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/26.jpg)
OpenGLBlockDiagram
FRAME BUFFER
RASTERIZ- ATION EVALUATOR
TEXTURE MEMORY
PIXEL OPS
PER-VERTEX OPS
PRIMITIVE ASSEMBLY
PER-FRAG OPS
Convert vertices into primitives. Clipping. Convert vertices into primitives. Clipping.
![Page 27: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/27.jpg)
OpenGLBlockDiagram
FRAME BUFFER
RASTERIZ- ATION EVALUATOR
TEXTURE MEMORY
PIXEL OPS
PER-VERTEX OPS
PRIMITIVE ASSEMBLY
PER-FRAG OPS
Unpacking, scaling, clamping, etc. of pixel data Unpacking, scaling, clamping, etc. of pixel data
![Page 28: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/28.jpg)
OpenGLBlockDiagram
FRAME BUFFER
RASTERIZ- ATION EVALUATOR
TEXTURE MEMORY
PIXEL OPS
PER-VERTEX OPS
PRIMITIVE ASSEMBLY
PER-FRAG OPS
Converting pixel and geometric data into fragments. Converting pixel and geometric data into fragments.
![Page 29: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/29.jpg)
OpenGLBlockDiagram
FRAME BUFFER
RASTERIZ- ATION EVALUATOR
TEXTURE MEMORY
PIXEL OPS
PER-VERTEX OPS
PRIMITIVE ASSEMBLY
PER-FRAG OPS
Texturing, scissor-, alpha-, depth tests, blending, etc.
![Page 30: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/30.jpg)
RasterizaKon
• Fragments‐datanecessarytopoten&allyupdateapixelintheframebuffer• depth• interpolatedajributes
• color• texturecoords• etc
• alpha• Normal
• ConvertprimiKvesintofragments
![Page 31: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/31.jpg)
RasterizaKon
• glHint• AnKaliasing,perspecKvecorrecKon
![Page 32: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/32.jpg)
Blending
• Combinecolourvalueoffragmentwithpixelvaluestoredinframebuffer• Orderdependent
![Page 33: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/33.jpg)
Transforms
• Viewtransform
• Modeltransform• ProjecKontransform
• Viewporttransform
![Page 34: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/34.jpg)
ViewTransforms
• ViewPoint/Camera• glOrtho( L, R, B, T, N, F )
• GluPerspective (fovy, aspect, zNear, zFar )
![Page 35: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/35.jpg)
ModelTransform
• Management• GlLoadMatrix/Identity • glPush/PopMatrix
• ManipulaKon• glTranslate • glRotate • glScale
![Page 36: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/36.jpg)
TransformsPutTogether
• Model+Viewtransform=Modelviewtransform
• ProjecKontransform• Viewporttransform
![Page 37: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/37.jpg)
Colours
• glColor,glClearColor
• RGB,RGBA,
• ExecutewithglVertex,glClear
![Page 38: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/38.jpg)
RenderingwithColours
glBegin(GL_TRIANGLES);
glColor4f( 1.0, 0.0, 0.0, 1.0 ); glVertex3f( 1.0, 0.0, 0.0); glVertex3f(-0.5, 1.0, 0.5); glVertex3f( 0.0,-0.5,-0.2);
glColor4f( 0.0, 0.0, 1.0, 0.5 ); glVertex3f( 1.0,-0.4, 0.0); glVertex3f( 0.0, 0.6, 0.0); glVertex3f(-0.6,-0.2, 0.4);
glEnd();
![Page 39: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/39.jpg)
RenderingwithColourArray
static GLfloat vertices[] = { 1.0, 0.0, 0.0, -0.5, 1.0, 0.5, 0.0,-0.5,-0.2, 1.0,-0.4, 0.0, 0.0, 0.6, 0.0, -0.6,-0.2, 0.4 }; static GLfloat colors[] = { 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0, 0.0, 1.0, 0.5, 0.0, 0.0, 1.0, 0.5 };
glVertexPointer( 3, GL_FLOAT, 0, vertices ); glColorPointer( 3, GL_FLOAT, 0, colors );
glEnableClientState(GL_VERTEX_ARRAY|GL_COLOR_ARRAY); glDrawArrays( GL_TRIANGLES, 0, 6 ); glDisableClientState(GL_VERTEX_ARRAY|GL_COLOR_ARRAY);
![Page 40: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/40.jpg)
RenderingwithInterleavedArrays
static GLfloat colverts[] = { 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, -0.5, 1.0, 0.5, 1.0, 0.0, 0.0, 1.0, 0.0,-0.5,-0.2, 0.0, 0.0, 1.0, 0.5, 1.0,-0.4, 0.0, 0.0, 0.0, 1.0, 0.5, 0.0, 0.6, 0.0, 0.0, 0.0, 1.0, 0.5, -0.6,-0.2, 0.4 };
glInterleavedArrays( GL_C4F_V3F, 0, colverts ); glDrawArrays( GL_TRIANGLES, 0, 6 ); glDisableClientState(GL_VERTEX_ARRAY|GL_COLOR_ARRAY);
![Page 41: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/41.jpg)
Shading
• AcKvateshading• glShadeModel,flatorsmooth• Requiresnormalizednormals
• AutomaKcnormalizaKon• glEnable(GL_NORMALIZE) • Expensive!
![Page 42: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/42.jpg)
SmoothShading
![Page 43: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/43.jpg)
Textures
• Texturestates• Targets:1D,2D,3Dtexture
• glEnable / glDisable • glTexEnv{if}[v], egGL_TEXTURE_ENV_MODE • What happens when a fragment is textured
• Decal,replace,modulate,blend,add,combine• glTexParameter{if}[v]
• egborder,interpolaKon,level‐of‐details• Texturestatesets
• glGenTextures • glBindTexture
![Page 44: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/44.jpg)
TextureData
• Loaddataintomemory• glTexImage{123}D / glTexSubImage{123}D
• Internalformat,dataformat,border,size,type,etc
![Page 45: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/45.jpg)
TextureCoordinates
• Vertex‐by‐vertex• glTexCoord
• Vertexarrays• glTexCoordPointer
• AutomaKccoordinates• glTexGen
![Page 46: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/46.jpg)
2DTextureExample
![Page 47: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/47.jpg)
2DTextureCodeExample
![Page 48: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/48.jpg)
2DTextureExample
![Page 49: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/49.jpg)
2DTextureExample
![Page 50: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/50.jpg)
LighKng
• glLightModel• EglocalorinfiniKvelyfaraway,twosidedlighKng
• Lightsources• Eightsources• Headlightdefault(GL_LIGHT0)
• Parameters• glLight{if}[v](source,pname,value(s))• Ambient,diffuse,specular,posiKon(direcKon),
spotdirecKon,cutoff,ajenuaKon
![Page 51: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/51.jpg)
Material
• Objectmaterials• AcKvatedbylighKng
• Parameters• glMaterial{if}[v](face,pname,value(s)) • Diffuse,ambient‐diffuse,
specular,shininess,emission
![Page 52: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/52.jpg)
GLU(OpenGLUKlityLibrary)
• Composedgeometries• gluSphere,gluCylinder,etc
• Tesselators,Nurbs• Subdividecomplexpolygons
• Nurblines,nurbsurfaces• Cameramanagement
• gluPerspecKve,gluLookat
![Page 53: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/53.jpg)
GLUT(OpenGLUKlityToolkit)
• Windowhandling• Initcontext,displaymode,etc• Createwindows,setsize,etc• EntrypointisglutMainLoop
• Events• Mouse,keyboard,display,etc
• Callbacks(hooks)• Postredisplay
• Complexobjects• Sphere,torus,teapot,etc
![Page 54: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/54.jpg)
GLUI
• UserInterfacelibrary• Add‐ontoOpenGL• Portable(usesOpenGL)• Easytouse
![Page 55: OpenGL - Linköping Universitywebstaff.itn.liu.se/~jimjo/courses/TNCG14-2010/documents/... · 2010. 3. 22. · GL_TRIANGLES, GL_BACK, GL_LIGHT0 • Types begin with GL and use only](https://reader035.vdocuments.mx/reader035/viewer/2022081410/608d6bf203c63645075fb13c/html5/thumbnails/55.jpg)
GLEW(ExtensionWranglerLibrary)
• Cross‐plaqormopen‐sourceC/C++extensionloadinglibrary
• Headerexposescompleteset• StandardfuncKonsforanyOpenGLversion• Allextensions
• FuncKonstocheckcapabiliKes• ActualversionofOpenGL• ActuallysupportedfuncKonsandextensions