slide1 l.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
CIS 636 Introduction to Computer Graphics PowerPoint Presentation
Download Presentation
CIS 636 Introduction to Computer Graphics

Loading in 2 Seconds...

play fullscreen
1 / 81

CIS 636 Introduction to Computer Graphics - PowerPoint PPT Presentation


  • 281 Views
  • Uploaded on

CIS 636 Introduction to Computer Graphics CG Basics 5 of 8: OpenGL Primer, Part 2 of 3 William H. Hsu Department of Computing and Information Sciences, KSU KSOL course pages: http://snipurl.com/1y5gc Course web site: http://www.kddresearch.org/Courses/CIS636

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'CIS 636 Introduction to Computer Graphics' - paul


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

CIS 636Introduction to Computer Graphics

CG Basics 5 of 8:

OpenGL Primer, Part 2 of 3

William H. Hsu

Department of Computing and Information Sciences, KSU

KSOL course pages: http://snipurl.com/1y5gc

Course web site: http://www.kddresearch.org/Courses/CIS636

Instructor home page: http://www.cis.ksu.edu/~bhsu

Readings:

All slides from SIGGRAPH 2000 tutorial on OpenGL, Shreiner, Angel, Shreiner: http://www.cs.unm.edu/~angel/SIGGRAPH/

Sections 2.6, 3.1, 20.3 – 20.13, Eberly 2e – see http://snurl.com/1ye72

NeHe tutorials: 6 – 10, http://nehe.gamedev.net

Article: http://www.kuro5hin.org/story/2003/10/28/9853/1617

CIS 636/736: (Introduction to) Computer Graphics

slide2

Lecture Outline

  • Four More Short OpenGL Tutorials from SIGGRAPH 2000
  • Vicki Shreiner: Animation and Depth Buffering
    • Double buffering
    • Illumination: light positioning, light models, attenuation
    • Material properties
    • Animation basics in OpenGL
  • Vicki Shreiner: Imaging and Raster Primitives
  • Ed Angel: Texture Mapping
  • Dave Shreiner: Advanced Topics
    • Display lists and vertex arrays
    • Accumulation buffer
    • Fog
    • Stencil buffering
    • Fragment programs (to be concluded in Tutorial 3)

CIS 636/736: (Introduction to) Computer Graphics

animation and depth buffering

Animation and Depth Buffering

Vicki Shreiner

CIS 636/736: (Introduction to) Computer Graphics

animation and depth buffering4
Animation and Depth Buffering
  • Double buffering and animation
  • Using depth buffer
    • Hidden surface removal
    • aka visible surface determination

CIS 636/736: (Introduction to) Computer Graphics

double buffering

Per

Vertex

Poly.

Frag

FB

Raster

CPU

DL

Texture

Pixel

1

1

2

2

4

4

Front

Buffer

Back

Buffer

8

8

16

16

Display

Double Buffering

CIS 636/736: (Introduction to) Computer Graphics

animation using double buffering
Animation using Double Buffering
  • Request a double buffered color buffer

glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE );

  • Clear color buffer

glClear( GL_COLOR_BUFFER_BIT );

  • Render scene
  • Request swap of front and back buffers

glutSwapBuffers();

  • Repeat steps 2 - 4 for animation

CIS 636/736: (Introduction to) Computer Graphics

depth buffering and hidden surface removal
Depth Buffering andHidden Surface Removal

1

1

2

2

4

4

Color

Buffer

Depth

Buffer

8

8

16

16

Display

CIS 636/736: (Introduction to) Computer Graphics

depth buffering using opengl
Depth Buffering Using OpenGL
  • Request a depth buffer

glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH );

  • Enable depth buffering

glEnable( GL_DEPTH_TEST );

  • Clear color and depth buffers

glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

  • Render scene
  • Swap color buffers

CIS 636/736: (Introduction to) Computer Graphics

updated program template 1
Updated Program Template [1]

void main( int argc, char** argv )

{

glutInit( &argc, argv );

glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH );

glutCreateWindow( “Tetrahedron” );

init();

glutIdleFunc( idle );

glutDisplayFunc( display );

glutMainLoop();

}

CIS 636/736: (Introduction to) Computer Graphics

updated program template 2
Updated Program Template [2]

void init( void ){ glClearColor( 0.0, 0.0, 1.0, 1.0 );}void idle( void ){ glutPostRedisplay();}

CIS 636/736: (Introduction to) Computer Graphics

updated program template 3
Updated Program Template [3]

void drawScene( void )

{

GLfloat vertices[] = { … };

GLfloat colors[] = { … };

glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

glBegin( GL_TRIANGLE_STRIP );

/* calls to glColor*() and glVertex*() */

glEnd();

glutSwapBuffers();

}

CIS 636/736: (Introduction to) Computer Graphics

lighting

Lighting

Dave Shreiner

CIS 636/736: (Introduction to) Computer Graphics

lighting principles
Lighting Principles
  • Lighting simulates how objects reflect light
    • material composition of object
    • light’s color and position
    • global lighting parameters
      • ambient light
      • two sided lighting
    • available in both color indexand RGBA mode

CIS 636/736: (Introduction to) Computer Graphics

how opengl simulates lights
How OpenGL Simulates Lights
  • Phong lighting model
    • Computed at vertices
  • Lighting contributors
    • Surface material properties
    • Light properties
    • Lighting model properties

CIS 636/736: (Introduction to) Computer Graphics

surface normals

Per

Vertex

Poly.

Frag

FB

Raster

CPU

DL

Texture

Pixel

Surface Normals
  • Normals define how a surface reflects light

glNormal3f( x, y, z )

    • Current normal is used to compute vertex’s color
    • Use unit normals for proper lighting
      • scaling affects a normal’s length

glEnable( GL_NORMALIZE )orglEnable( GL_RESCALE_NORMAL )

CIS 636/736: (Introduction to) Computer Graphics

material properties
Material Properties
  • Define the surface properties of a primitive

glMaterialfv( face, property, value );

    • separate materials for front and back

CIS 636/736: (Introduction to) Computer Graphics

light properties
Light Properties

glLightfv( light, property, value );

  • light specifies which light
    • multiple lights, starting with GL_LIGHT0

glGetIntegerv( GL_MAX_LIGHTS, &n );

  • properties
    • colors
    • position and type
    • attenuation

CIS 636/736: (Introduction to) Computer Graphics

light sources
Light Sources
  • Light color properties
    • GL_AMBIENT
    • GL_DIFFUSE
    • GL_SPECULAR

CIS 636/736: (Introduction to) Computer Graphics

types of lights
Types of Lights
  • OpenGL supports two types of Lights
    • Local (Point) light sources
    • Infinite (Directional) light sources
  • Type of light controlled by w coordinate

CIS 636/736: (Introduction to) Computer Graphics

turning on the lights
Turning on the Lights
  • Flip each light’s switch

glEnable( GL_LIGHTn );

  • Turn on power

glEnable( GL_LIGHTING );

CIS 636/736: (Introduction to) Computer Graphics

light material tutorial
Light Material Tutorial

CIS 636/736: (Introduction to) Computer Graphics

controlling a light s position
Controlling a Light’s Position
  • Modelview matrix affects a light’s position
    • Different effects based on whenposition is specified
      • eye coordinates
      • world coordinates
      • model coordinates
    • Push and pop matrices to uniquely control a light’s position

CIS 636/736: (Introduction to) Computer Graphics

light position tutorial
Light Position Tutorial

CIS 636/736: (Introduction to) Computer Graphics

advanced lighting features 1
Advanced Lighting Features [1]
  • Spotlights
    • localize lighting affects
      • GL_SPOT_DIRECTION
      • GL_SPOT_CUTOFF
      • GL_SPOT_EXPONENT

CIS 636/736: (Introduction to) Computer Graphics

advanced lighting features 2
Advanced Lighting Features [2]
  • Light attenuation
    • decrease light intensity with distance
      • GL_CONSTANT_ATTENUATION
      • GL_LINEAR_ATTENUATION
      • GL_QUADRATIC_ATTENUATION

CIS 636/736: (Introduction to) Computer Graphics

light model properties
Light Model Properties

glLightModelfv( property, value );

  • Enabling two sided lighting

GL_LIGHT_MODEL_TWO_SIDE

  • Global ambient color

GL_LIGHT_MODEL_AMBIENT

  • Local viewer mode

GL_LIGHT_MODEL_LOCAL_VIEWER

  • Separate specular color

GL_LIGHT_MODEL_COLOR_CONTROL

CIS 636/736: (Introduction to) Computer Graphics

tips for better lighting
Tips for Better Lighting
  • Recall lighting computed only at vertices
    • model tessellation heavily affects lighting results
      • better results but more geometry to process
  • Use a single infinite light for fastest lighting
    • minimal computation per vertex

CIS 636/736: (Introduction to) Computer Graphics

imaging and raster primitives

Imaging and Raster Primitives

Vicki Shreiner

CIS 636/736: (Introduction to) Computer Graphics

imaging and raster primitives29
Imaging and Raster Primitives
  • Describe OpenGL’s raster primitives: bitmaps and image rectangles
  • Demonstrate how to get OpenGL to read and render pixel rectangles

CIS 636/736: (Introduction to) Computer Graphics

pixel based primitives
Pixel-based primitives
  • Bitmaps
    • 2D array of bit masks for pixels
      • update pixel color based on current color
  • Images
    • 2D array of pixel color information
      • complete color information for each pixel
  • OpenGL doesn’t understand image formats

CIS 636/736: (Introduction to) Computer Graphics

pixel pipeline

Per

Vertex

Poly.

Frag

FB

Raster

CPU

DL

Texture

Pixel

Pixel Pipeline
  • Programmable pixel storage and transfer operations

glBitmap(), glDrawPixels()

Rasterization

(including

Pixel Zoom)

Pixel

Storage

Modes

Pixel-Transfer

Operations

(and Pixel Map)

Per FragmentOperations

FrameBuffer

CPU

glCopyTex*Image();

TextureMemory

glReadPixels(), glCopyPixels()

CIS 636/736: (Introduction to) Computer Graphics

positioning image primitives
Positioning Image Primitives

glRasterPos3f( x, y, z )

  • raster position transformed like geometry
  • discarded if raster position isoutside of viewport
    • may need to fine tuneviewport for desired results

Raster Position

CIS 636/736: (Introduction to) Computer Graphics

rendering bitmaps

height

yorig

width

xorig

xmove

Rendering Bitmaps

glBitmap( width, height, xorig, yorig, xmove, ymove, bitmap )

  • render bitmap in current colorat
  • advance raster position by after rendering

CIS 636/736: (Introduction to) Computer Graphics

rendering fonts using bitmaps
Rendering Fonts using Bitmaps
  • OpenGL uses bitmaps for font rendering
    • each character stored in display list containing bitmap
    • window system specific routines to access system fonts
      • glXUseXFont()
      • wglUseFontBitmaps()

CIS 636/736: (Introduction to) Computer Graphics

rendering images
Rendering Images

glDrawPixels( width, height, format, type, pixels )

  • render pixels with lower left ofimage at current raster position
  • numerous formats and data typesfor specifying storage in memory
    • best performance by using format and type that matches hardware

CIS 636/736: (Introduction to) Computer Graphics

reading pixels
Reading Pixels

glReadPixels( x, y, width, height, format, type, pixels )

    • read pixels from specified (x,y) position in framebuffer
    • pixels automatically converted from framebuffer format into requested format and type
  • Framebuffer pixel copy

glCopyPixels( x, y, width, height, type )

CIS 636/736: (Introduction to) Computer Graphics

pixel zoom

RasterPosition

glPixelZoom(1.0, -1.0);

Pixel Zoom

glPixelZoom( x, y )

  • expand, shrink or reflect pixelsaround current raster position
  • fractional zoom supported

CIS 636/736: (Introduction to) Computer Graphics

storage and transfer modes
Storage and Transfer Modes
  • Storage modes control accessing memory
    • byte alignment in host memory
    • extracting a subimage
  • Transfer modes allow modify pixel values
    • scale and bias pixel component values
    • replace colors using pixel maps

CIS 636/736: (Introduction to) Computer Graphics

texture mapping

Texture Mapping

Ed Angel

CIS 636/736: (Introduction to) Computer Graphics

texture mapping40

Per

Vertex

Poly.

Frag

FB

Raster

CPU

DL

Texture

Pixel

Texture Mapping
  • Apply 1-D, 2-D, or 3-D image to geometric primitives
  • Uses of Texturing
    • simulating materials
    • reducing geometric complexity
    • image warping
    • reflections

CIS 636/736: (Introduction to) Computer Graphics

texture mapping41

y

z

x

t

s

Texture Mapping

screen

geometry

image

CIS 636/736: (Introduction to) Computer Graphics

texture mapping and opengl pipeline
Images and geometry flow through separate pipelines that join at the rasterizer

“complex” textures do not affect geometric complexity

geometry pipeline

vertices

rasterizer

image

pixel pipeline

Texture Mapping andOpenGL Pipeline

CIS 636/736: (Introduction to) Computer Graphics

texture example
Texture Example
  • The texture (below) is a 256 x 256 image that has beenmapped to a rectangularpolygon which is viewed inperspective

CIS 636/736: (Introduction to) Computer Graphics

applying textures 1
Applying Textures [1]
  • Three steps
    • specify texture
      • read or generate image
      • assign to texture
    • assign texture coordinates to vertices
    • specify texture parameters
      • wrapping, filtering

CIS 636/736: (Introduction to) Computer Graphics

applying textures 2
Applying Textures [2]
  • specify textures in texture objects
  • set texture filter
  • set texture function
  • set texture wrap mode
  • set optional perspective correction hint
  • bind texture object
  • enable texturing
  • supply texture coordinates for vertex
    • coordinates can also be generated

CIS 636/736: (Introduction to) Computer Graphics

texture objects 1
Texture Objects [1]
  • Like display lists for texture images
    • one image per texture object
    • may be shared by several graphics contexts
  • Generate texture names

glGenTextures(n,*texIds );

CIS 636/736: (Introduction to) Computer Graphics

texture objects 2
Texture Objects [2]
  • Create texture objects with texture data and state

glBindTexture( target, id );

  • Bind textures before using

glBindTexture( target, id );

CIS 636/736: (Introduction to) Computer Graphics

specify texture image

Per

Vertex

Poly.

Frag

FB

Raster

CPU

DL

Texture

Pixel

Specify Texture Image
  • Define a texture image from array of texels in CPU memory

glTexImage2D( target, level, components, w, h, border, format, type, *texels );

    • dimensions of image must be powers of 2
  • Texel colors are processed by pixel pipeline
    • pixel scales, biases and lookups can bedone

CIS 636/736: (Introduction to) Computer Graphics

converting texture images
Converting Texture Images
  • If dimensions of image are not power of 2

gluScaleImage( format, w_in, h_in, type_in, *data_in, w_out, h_out, type_out, *data_out );

    • *_in is for source image
    • *_out is for destination image
  • Image interpolated and filtered during scaling

CIS 636/736: (Introduction to) Computer Graphics

specifying textures other methods
Specifying Textures:Other Methods
  • Use frame buffer as source of texture image
    • uses current buffer assource image

glCopyTexImage2D(...)

glCopyTexImage1D(...)

  • Modify part of a defined texture

glTexSubImage2D(...)

glTexSubImage1D(...)

  • Do both with glCopyTexSubImage2D(...), etc.

CIS 636/736: (Introduction to) Computer Graphics

mapping a texture

Per

Vertex

Poly.

Frag

FB

Raster

CPU

DL

Texture

Pixel

Texture Space

Object Space

t

1, 1

(s, t) = (0.2, 0.8)

A

a

c

(0.4, 0.2)

b

B

C

(0.8, 0.4)

s

0, 0

1, 0

Mapping aTexture
  • Based on parametric texture coordinates
  • glTexCoord*() specified at each vertex

0, 1

CIS 636/736: (Introduction to) Computer Graphics

generating texture coordinates
Generating Texture Coordinates
  • Automatically generate texture coords

glTexGen{ifd}[v]()

  • specify a plane
    • generate texture coordinates based upon distance from plane
  • generation modes
    • GL_OBJECT_LINEAR
    • GL_EYE_LINEAR
    • GL_SPHERE_MAP

CIS 636/736: (Introduction to) Computer Graphics

tutorial texture
Tutorial: Texture

CIS 636/736: (Introduction to) Computer Graphics

texture application methods
Texture Application Methods
  • Filter Modes
    • minification or magnification
    • special mipmap minification filters
  • Wrap Modes
    • clamping or repeating
  • Texture Functions
    • how to mix primitive’s color with texture’s color
      • blend, modulate or replace texels

CIS 636/736: (Introduction to) Computer Graphics

filter modes
Filter Modes

Example:

glTexParameteri( target, type, mode );

Texture

Polygon

Texture

Polygon

Magnification

Minification

CIS 636/736: (Introduction to) Computer Graphics

mipmapped textures
Mipmapped Textures
  • Mipmap allows for prefiltered texture maps of decreasing resolutions
  • Lessens interpolation errors for smaller textured objects
  • Declare mipmap level during texture definition

glTexImage*D( GL_TEXTURE_*D, level, … )

  • GLU mipmap builder routines

gluBuild*DMipmaps( … )

  • OpenGL 1.2 introduces advanced LOD controls

CIS 636/736: (Introduction to) Computer Graphics

wrapping mode
Wrapping Mode
  • Example:

glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP )

glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT )

t

s

GL_REPEAT

wrapping

GL_CLAMP

wrapping

texture

CIS 636/736: (Introduction to) Computer Graphics

texture functions
Texture Functions
  • Controls how texture is applied

glTexEnv{fi}[v]( GL_TEXTURE_ENV, prop, param )

  • GL_TEXTURE_ENV_MODE modes
    • GL_MODULATE
    • GL_BLEND
    • GL_REPLACE
  • Set blend color with GL_TEXTURE_ENV_COLOR

CIS 636/736: (Introduction to) Computer Graphics

perspective correction hint
Perspective Correction Hint
  • Texture coordinate and color interpolation
    • either linearly in screen space
    • or using depth/perspective values (slower)
  • Noticeable for polygons “on edge”

glHint( GL_PERSPECTIVE_CORRECTION_HINT, hint )

where hint is one of

      • GL_DONT_CARE
      • GL_NICEST
      • GL_FASTEST

CIS 636/736: (Introduction to) Computer Graphics

is there room for a texture
Is There Room for a Texture?
  • Query largest dimension of texture image
    • typically largest square texture
    • doesn’t consider internal format size

glGetIntegerv( GL_MAX_TEXTURE_SIZE, &size )

  • Texture proxy
    • will memory accommodate requested texture size?
    • no image specified; placeholder
    • if texture won’t fit, texture state variables set to 0
      • doesn’t know about other textures
      • only considers whether this one texture will fit all of memory

CIS 636/736: (Introduction to) Computer Graphics

texture residency
Texture Residency
  • Working set of textures
    • high-performance, usually hardware accelerated
    • textures must be in texture objects
    • a texture in the working set is resident
    • for residency of current texture, check GL_TEXTURE_RESIDENT state
  • If too many textures, not all are resident
    • can set priority to have some kicked out first
    • establish 0.0 to 1.0 priorities for texture objects

CIS 636/736: (Introduction to) Computer Graphics

advanced opengl topics

Advanced OpenGL Topics

Dave Shreiner

CIS 636/736: (Introduction to) Computer Graphics

advanced opengl topics63
Advanced OpenGL Topics
  • Display Lists and Vertex Arrays
  • Alpha Blending and Antialiasing
  • Using the Accumulation Buffer
  • Fog
  • Feedback & Selection
  • Fragment Tests and Operations
  • Using the Stencil Buffer

CIS 636/736: (Introduction to) Computer Graphics

rendering immediate mode versus display listed 1
Rendering: Immediate Mode versus Display Listed [1]
  • Immediate Mode Graphics
    • Primitives are sent to pipeline and display right away
    • No memory of graphical entities
  • Display Listed Graphics
    • Primitives placed in display lists
    • Display lists kept on graphics server
    • Can be redisplayed with different state
    • Can be shared among OpenGL graphics contexts

CIS 636/736: (Introduction to) Computer Graphics

rendering immediate mode versus display listed 2
Rendering: Immediate Mode versus Display Listed [2]

Immediate Mode

Per Vertex

Operations &

Primitive

Assembly

Polynomial

Evaluator

DisplayList

Per Fragment

Operations

Frame

Buffer

CPU

Rasterization

Display Listed

Texture

Memory

Pixel

Operations

CIS 636/736: (Introduction to) Computer Graphics

display lists 1

Per

Vertex

Poly.

Frag

FB

Raster

CPU

DL

Texture

Pixel

Display Lists [1]
  • Creating a display list

GLuint id;

void init( void )

{

id = glGenLists( 1 );

glNewList( id, GL_COMPILE );

/* other OpenGL routines */

glEndList();

}

  • Call a created list

void display( void )

{

glCallList( id );

}

CIS 636/736: (Introduction to) Computer Graphics

display lists 2
Display Lists [2]
  • Not all OpenGL routines can be stored in display lists
  • State changes persist, even after a display list is finished
  • Display lists can call other display lists
  • Display lists are not editable, but you can fake it
    • make a list (A) which calls other lists (B, C, and D)
    • delete and replace B, C, and D, as needed

CIS 636/736: (Introduction to) Computer Graphics

display lists and hierarchy
Display Lists and Hierarchy
  • Consider model of a car
    • Create display list for chassis
    • Create display list for wheel

glNewList( CAR, GL_COMPILE );

glCallList( CHASSIS );

glTranslatef( … );

glCallList( WHEEL );

glTranslatef( … );

glCallList( WHEEL );

glEndList();

CIS 636/736: (Introduction to) Computer Graphics

vertex arrays

Per

Vertex

Poly.

Frag

FB

Raster

CPU

DL

Texture

Pixel

Color

data

Vertex

data

Vertex Arrays
  • Pass arrays of vertices, colors, etc. to OpenGL in large chunk

glVertexPointer( 3, GL_FLOAT, 0, coords)

glColorPointer( 4, GL_FLOAT, 0, colors)

glEnableClientState( GL_VERTEX_ARRAY)

glEnableClientState( GL_COLOR_ARRAY)

glDrawArrays( GL_TRIANGLE_STRIP, 0, numVerts );

  • All active arrays are used in rendering

CIS 636/736: (Introduction to) Computer Graphics

why use display lists or vertex arrays
Why use Display Listsor Vertex Arrays?
  • May provide better performance than immediate mode rendering
  • Display lists can be shared between multiple OpenGL context
    • reduce memory usage for multi-context applications
  • Vertex arrays may format data for better memory access

CIS 636/736: (Introduction to) Computer Graphics

multi pass rendering
Multi-pass Rendering
  • Blending allows results from multiple drawing passes to be combined together
    • enables more complex rendering algorithms

Example of bump-mapping

done with multi-pass

OpenGL algorithm

CIS 636/736: (Introduction to) Computer Graphics

next time opengl part 3 of 3 accumulation buffer
Next Time (OpenGL Part 3 of 3):Accumulation Buffer
  • Problems of compositing into color buffers
    • Limited color resolution
      • clamping
      • loss of accuracy
    • Accumulation buffer acts as “floating point” color buffer
      • accumulate into accumulation buffer
      • transfer results to frame buffer

CIS 636/736: (Introduction to) Computer Graphics

next time opengl part 3 of 3 fog
Next Time (OpenGL Part 3 of 3):Fog

CIS 636/736: (Introduction to) Computer Graphics

getting to framebuffer

Scissor

Test

Alpha

Test

Stencil

Test

Fragment

Depth

Test

LogicalOperations

Blending

Dithering

Framebuffer

Getting to Framebuffer

CIS 636/736: (Introduction to) Computer Graphics

next time opengl part 3 of 3 stencil buffer

Per

Vertex

Poly.

Frag

FB

Raster

CPU

DL

Texture

Pixel

Next Time (OpenGL Part 3 of 3):Stencil Buffer
  • Used to control drawing based on values in the stencil buffer
    • Fragments that fail the stencil test are not drawn
    • Example: create a mask in stencil buffer and draw only objects not in mask area

CIS 636/736: (Introduction to) Computer Graphics

next time opengl part 3 of 3 advanced imaging
Next Time (OpenGL Part 3 of 3):Advanced Imaging
  • Imaging Subset
    • Only available if GL_ARB_imagingdefined
      • Color matrix
      • Convolutions
      • Color tables
      • Histogram
      • MinMax
      • Advanced Blending

CIS 636/736: (Introduction to) Computer Graphics

on line resources
On-Line Resources
  • http://www.opengl.org
    • start here; up to date specification and lots of sample code
  • news:comp.graphics.api.opengl
  • http://www.sgi.com/software/opengl
  • http://www.mesa3d.org/
    • Brian Paul’s Mesa 3D
  • http://www.cs.utah.edu/~narobins/opengl.html
    • very special thanks to Nate Robins for the OpenGL Tutors
    • source code for tutors available here!
  • http://nehe.gamedev.net

CIS 636/736: (Introduction to) Computer Graphics

books
Books
  • OpenGL Programming Guide, 5th – 6th Edition
  • OpenGL Shading Language, 2nd Edition
  • OpenGL Programming for the X Window System
    • includes many GLUT examples
  • Interactive Computer Graphics: A top-down approach with OpenGL, 4th – 5th Edition

CIS 636/736: (Introduction to) Computer Graphics

slide79

Summary

  • Four More Short OpenGL Tutorials from SIGGRAPH 2000
  • Vicki Shreiner: Animation and Depth Buffering
    • Double buffering
    • Illumination: light positioning, light models, attenuation
    • Material properties
    • Animation basics in OpenGL
  • Vicki Schreiner: Imaging and Raster Primitives
  • Ed Angel: Texture Mapping in OpenGL
  • Dave Shreiner: Advanced Topics
    • Display lists and vertex arrays
    • Fog
    • Stencil buffering, fragment programs (to be continued)

CIS 636/736: (Introduction to) Computer Graphics

slide80

Terminology

  • Double Buffering
  • Lighting
  • Illumination Equation – describes light in scene
    • Ambient light – catch-all term for whole scene, all lights
    • Diffuse reflectance – omnidirectional, from matte surfaces
    • Specular reflectance – unidirectional, for highlights: shiny surfaces
    • Attenuation – how quickly light drops off as function of distance
  • Pixel and Fragment Programs (“Pixel Shaders”)
  • Vertex Shaders
  • Texture Maps
  • Other Mappings Discussed in Course
    • Bumpakadisplacement – perturb surface normal, calculate lighting
    • Reflection and transparency
    • Shadow
    • Environment

CIS 636/736: (Introduction to) Computer Graphics

slide81

Next: Polygons, OpenGL Tutorial 3

  • Dave Shreiner: Advanced Topics (concluded)
    • Advanced Primitives: Cubic Curves, Bicubic Surfaces
    • More on Shadow Stencil Buffer
    • Alpha, Blending, Antialiasing
    • Accumulation Buffer, Fog, Jitter
  • Using the OpenGL Shading Language
    • More on fragment programs
    • Demo: color interpolation
    • Example: Fast Phong shading
  • Special Effects

CIS 636/736: (Introduction to) Computer Graphics