Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics CIS 636 Introduction.

Slides:



Advertisements
Similar presentations
Programming with OpenGL - Getting started - Hanyang University Han Jae-Hyek.
Advertisements

Compositing and Blending Ed Angel Professor Emeritus of Computer Science University of New Mexico 1 E. Angel and D. Shreiner: Interactive Computer Graphics.
©Zachary Wartell, UNCC9/28/ :30 AM 1 Overview of OpenGL Revision: 1.2 Copyright Professor Zachary Wartell, University of North Carolina All Rights.
Polygon Rendering Flat Rendering Goraud Rendering Uses Phong Reflectance Phong Rendering.
CS 352: Computer Graphics Chapter 7: The Rendering Pipeline.
Understanding the graphics pipeline Lecture 2 Original Slides by: Suresh Venkatasubramanian Updates by Joseph Kider.
Graphics Pipeline.
An Interactive Introduction to OpenGL Programming Dave Shreiner Ed Angel Vicki Shreiner.
2 COEN Computer Graphics I Evening’s Goals n Discuss the fundamentals of lighting in computer graphics n Analyze OpenGL’s lighting model n Show.
Introduction and Basic OpenGL functionality
Status – Week 257 Victor Moya. Summary GPU interface. GPU interface. GPU state. GPU state. API/Driver State. API/Driver State. Driver/CPU Proxy. Driver/CPU.
RealityEngine Graphics Kurt Akeley Silicon Graphics Computer Systems.
Computer Graphics(Fall 2003) COMS 4160, Lecture 7: OpenGL 3 Ravi Ramamoorthi Many slides courtesy Greg Humphreys.
OPENGL Return of the Survival Guide. Buffers (0,0) OpenGL holds the buffers in a coordinate system such that the origin is the lower left corner.
An Interactive Introduction to OpenGL Programming Dave Shreiner Ed Angel Vicki Shreiner.
CS 4363/6353 BASIC RENDERING. THE GRAPHICS PIPELINE OVERVIEW Vertex Processing Coordinate transformations Compute color for each vertex Clipping and Primitive.
Computer Graphic Creator: Mohsen Asghari Session 2 Fall 2014.
Texture Mapping. Texturing  process that modifies the appearance of each point on a surface using an image or function  any aspect of appearance can.
Status – Week 277 Victor Moya.
OpenGL Texture Mapping
OpenGL Texture Mapping Ed Angel Professor of Computer Science, Electrical and Computer Engineering, and Media Arts University of New Mexico.
1 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 Models and Architectures Ed Angel Professor of Computer Science, Electrical and Computer.
OpenGL Texture Mapping April 16, Angel: Interactive Computer Graphics 3E © Addison-Wesley 2002 Basic Stragegy Three steps to applying a texture.
Computing & Information Sciences Kansas State University Advanced CG 1 of 8: TexturingCIS 636/736: (Introduction to) Computer Graphics CIS 736 Computer.
Programmable Pipelines. Objectives Introduce programmable pipelines ­Vertex shaders ­Fragment shaders Introduce shading languages ­Needed to describe.
1 Introduction to Computer Graphics with WebGL Ed Angel Professor Emeritus of Computer Science Founding Director, Arts, Research, Technology and Science.
Programmable Pipelines. 2 Objectives Introduce programmable pipelines ­Vertex shaders ­Fragment shaders Introduce shading languages ­Needed to describe.
Texture Mapping. Scope Buffers Buffers Various of graphics image Various of graphics image Texture mapping Texture mapping.
Computer Graphics An Introduction. What’s this course all about? 06/10/2015 Lecture 1 2 We will cover… Graphics programming and algorithms Graphics data.
Computer Graphics Ben-Gurion University of the Negev Fall 2012.
An Interactive Introduction to OpenGL Programming Ed Angel
09/09/03CS679 - Fall Copyright Univ. of Wisconsin Last Time Event management Lag Group assignment has happened, like it or not.
Imaging and Raster Primitives Vicki Shreiner. 2 Jobs Andrew Giles Andrew Giles Chuck Fultz Chuck Fultz SIGGraph - SIGGraph.
CS380 LAB IV OpenGL Jonghyeob Lee Reference1. [OpenGL course slides by Rasmus Stenholt] Reference2. [
OpenGL Conclusions OpenGL Programming and Reference Guides, other sources CSCI 6360/4360.
1 Introduction to Computer Graphics SEN Introduction to OpenGL Graphics Applications.
Computing & Information Sciences Kansas State University Lecture 20 of 42CIS 636/736: (Introduction to) Computer Graphics Lecture 21 of 42 William H. Hsu.
1 Introduction to Computer Graphics with WebGL Ed Angel Professor Emeritus of Computer Science Founding Director, Arts, Research, Technology and Science.
Texture Mapping. 2 Motivation A typical modern graphics card can handle 10s of millions of polygons a second. How many individual blades of grass are.
OpenGL Texture Mapping. 2 Objectives Introduce the OpenGL texture functions and options.
CS 480/680 Computer Graphics OpenGL Texture Mapping Dr. Frederick C Harris, Jr. Fall 2011.
Programmable Pipelines Ed Angel Professor of Computer Science, Electrical and Computer Engineering, and Media Arts Director, Arts Technology Center University.
CG Summary: OpenGL Shading andTextures Angel, Chapters 5, 7; “Red Book” slides from AW, red book, etc. CSCI 6360/4360.
Review of OpenGL Basics
2 COEN Computer Graphics I Evening’s Goals n Discuss displaying and reading image primitives n Describe texture mapping n Discuss OpenGL modes and.
Computer Graphics Bing-Yu Chen National Taiwan University.
OpenGL Architecture Display List Polynomial Evaluator Per Vertex Operations & Primitive Assembly Rasterization Per Fragment Operations Frame Buffer Texture.
09/16/03CS679 - Fall Copyright Univ. of Wisconsin Last Time Environment mapping Light mapping Project Goals for Stage 1.
1 Introduction to Computer Graphics with WebGL Ed Angel Professor Emeritus of Computer Science Founding Director, Arts, Research, Technology and Science.
1 Introduction to Computer Graphics with WebGL Ed Angel Professor Emeritus of Computer Science Founding Director, Arts, Research, Technology and Science.
Advanced Computer Graphics Spring 2014 K. H. Ko School of Mechatronics Gwangju Institute of Science and Technology.
Shading in OpenGL Ed Angel Professor Emeritus of Computer Science University of New Mexico 1 E. Angel and D. Shreiner: Interactive Computer Graphics 6E.
Review on Graphics Basics. Outline Polygon rendering pipeline Affine transformations Projective transformations Lighting and shading From vertices to.
Computing & Information Sciences Kansas State University Lecture 12 of 42CIS 636/736: (Introduction to) Computer Graphics CIS 636/736 Computer Graphics.
Computer Graphics Bing-Yu Chen National Taiwan University.
What are shaders? In the field of computer graphics, a shader is a computer program that runs on the graphics processing unit(GPU) and is used to do shading.
Details of Texture Mapping Glenn G. Chappell U. of Alaska Fairbanks CS 381 Lecture Notes Monday, December 1, 2003.
Lighting Dave Shreiner. 2 Lighting Principles Lighting simulates how objects reflect light Lighting simulates how objects reflect light material composition.
Computer Graphics (Fall 2003) COMS 4160, Lecture 5: OpenGL 1 Ravi Ramamoorthi Many slides courtesy Greg Humphreys.
CSC Graphics Programming Budditha Hettige Department of Statistics and Computer Science.
Chapter 5. Lighting Computer Graphics (spring, 2009) School of Computer Science University of Seoul.
Programmable Pipelines
OpenGL Texture Mapping
OpenGL Texture Mapping
Display Lists & Text Glenn G. Chappell
3D Game Programming Texture Mapping
OpenGL Texture Mapping
OpenGL Texture Mapping
3D Game Programming Texture Mapping
OpenGL Texture Mapping
Presentation transcript:

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics CIS 636 Introduction to Computer Graphics William H. Hsu Department of Computing and Information Sciences, KSU KSOL course pages: Course web site: Instructor home page: Readings: All slides from SIGGRAPH 2000 tutorial on OpenGL, Shreiner, Angel, Shreiner: Sections 2.6, 3.1, 20.3 – 20.13, Eberly 2 e – see NeHe tutorials: 6 – 10, Article: CG Basics 5 of 8: OpenGL Primer, Part 2 of 3

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics 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)

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Animation and Depth Buffering Vicki Shreiner

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Animation and Depth Buffering Double buffering and animation Using depth buffer  Hidden surface removal  aka visible surface determination

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Double Buffering Front Buffer Back Buffer Display CPU DL Poly. Per Vertex Per Vertex Raster Frag FB Pixel Texture

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics  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 for animation Animation using Double Buffering

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Depth Buffering and Hidden Surface Removal Color Buffer Depth Buffer Display

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics 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

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics 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(); }

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics void init( void ) { glClearColor( 0.0, 0.0, 1.0, 1.0 ); } void idle( void ) { glutPostRedisplay(); } Updated Program Template [2]

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics 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(); } Updated Program Template [3]

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Lighting Dave Shreiner

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics 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 index and RGBA mode

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics How OpenGL Simulates Lights Phong lighting model  Computed at vertices Lighting contributors  Surface material properties  Light properties  Lighting model properties

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics 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 ) or glEnable( GL_RESCALE_NORMAL ) CPU DL Poly. Per Vertex Per Vertex Raster Frag FB Pixel Texture

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Material Properties Define the surface properties of a primitive glMaterialfv( face, property, value );  separate materials for front and back

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics 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

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Light Sources Light color properties  GL_AMBIENT  GL_DIFFUSE  GL_SPECULAR

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Types of Lights OpenGL supports two types of Lights  Local (Point) light sources  Infinite (Directional) light sources Type of light controlled by w coordinate

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Turning on the Lights Flip each light’s switch glEnable( GL_LIGHT n ); Turn on power glEnable( GL_LIGHTING );

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Light Material Tutorial

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Controlling a Light’s Position Modelview matrix affects a light’s position  Different effects based on when position is specified  eye coordinates  world coordinates  model coordinates  Push and pop matrices to uniquely control a light’s position

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Light Position Tutorial

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Spotlights  localize lighting affects  GL_SPOT_DIRECTION  GL_SPOT_CUTOFF  GL_SPOT_EXPONENT Advanced Lighting Features [1]

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Advanced Lighting Features [2] Light attenuation  decrease light intensity with distance  GL_CONSTANT_ATTENUATION  GL_LINEAR_ATTENUATION  GL_QUADRATIC_ATTENUATION

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics 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

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics 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

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Imaging and Raster Primitives Vicki Shreiner

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Imaging and Raster Primitives Describe OpenGL’s raster primitives: bitmaps and image rectangles Demonstrate how to get OpenGL to read and render pixel rectangles

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics 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

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Frame Buffer Rasterization (including Pixel Zoom) Per Fragment Operations TextureM emory Pixel-Transfer Operations (and Pixel Map) CPU Pixel Storage Modes glReadPixels(), glCopyPixels() glBitmap(), glDrawPixels() glCopyTex*Image(); Pixel Pipeline Programmable pixel storage and transfer operations CPU DL Poly. Per Vertex Per Vertex Raster Frag FB Pixel Texture

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Positioning Image Primitives glRasterPos3f( x, y, z )  raster position transformed like geometry  discarded if raster position is outside of viewport  may need to fine tune viewport for desired results Raster Position

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Rendering Bitmaps glBitmap( width, height, xorig, yorig, xmove, ymove, bitmap )  render bitmap in current color at  advance raster position by after rendering width height xorig yorig xmove

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics 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()

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Rendering Images glDrawPixels( width, height, format, type, pixels )  render pixels with lower left of image at current raster position  numerous formats and data types for specifying storage in memory  best performance by using format and type that matches hardware

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics 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 )

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Raster Position glPixelZoom(1.0, -1.0); Pixel Zoom glPixelZoom( x, y )  expand, shrink or reflect pixels around current raster position  fractional zoom supported

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics 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

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Texture Mapping Ed Angel

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Texture Mapping CPU DL Poly. Per Vertex Per Vertex Raster Frag FB Pixel Texture Apply 1-D, 2-D, or 3-D image to geometric primitives Uses of Texturing  simulating materials  reducing geometric complexity  image warping  reflections

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Texture Mapping s t x y z image geometry screen

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Texture Mapping and OpenGL Pipeline geometry pipeline vertices pixel pipeline image rasterizer Images and geometry flow through separate pipelines that join at the rasterizer  “complex” textures do not affect geometric complexity

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Texture Example The texture (below) is a 256 x 256 image that has been mapped to a rectangular polygon which is viewed in perspective

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Three steps  specify texture  read or generate image  assign to texture  assign texture coordinates to vertices  specify texture parameters  wrapping, filtering Applying Textures [1]

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics 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

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics 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 );

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Create texture objects with texture data and state glBindTexture( target, id ); Bind textures before using glBindTexture( target, id ); Texture Objects [2]

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics 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 be done Specify Texture Image CPU DL Poly. Per Vertex Per Vertex Raster Frag FB Pixel Texture

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics 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

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Specifying Textures: Other Methods Use frame buffer as source of texture image  uses current buffer as source imageglCopyTexImage2D(...)glCopyTexImage1D(...) Modify part of a defined textureglTexSubImage2D(...)glTexSubImage1D(...) Do both with glCopyTexSubImage2D(...), etc.

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Based on parametric texture coordinates glTexCoord*() specified at each vertex 0, 1 s t 1, 1 0, 0 1, 0 (s, t) = (0.2, 0.8) (0.4, 0.2) (0.8, 0.4) A BC a b c Texture SpaceObject Space Mapping a Texture CPU DL Poly. Per Vertex Per Vertex Raster Frag FB Pixel Texture

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics 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

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Tutorial: Texture

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics 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 Texture Application Methods

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Filter Modes TexturePolygon MagnificationMinification PolygonTexture Example: glTexParameteri( target, type, mode );

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics 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

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Wrapping Mode Example: glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP ) glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT ) texture GL_REPEAT wrapping GL_CLAMP wrapping s t

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics 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

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics 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

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics 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

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics 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

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Advanced OpenGL Topics Dave Shreiner

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics 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

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics 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

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Immediate Mode Display Listed Display List Polynomial Evaluator Per Vertex Operations & Primitive Assembly Rasterization Per Fragment Operations Texture Memor y CPU Pixel Operations Frame Buffer Rendering: Immediate Mode versus Display Listed [2]

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics 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 ); } CPU DL Poly. Per Vertex Per Vertex Raster Frag FB Pixel Texture Display Lists [1]

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics 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

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics 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();

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Vertex Arrays Color data Vertex data CPU DL Poly. Per Vertex Per Vertex Raster Frag FB Pixel Texture 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

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Why use Display Lists or 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

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics 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

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics 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

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Next Time (OpenGL Part 3 of 3): Fog

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Getting to Framebuffer Blending Depth Test Depth Test Dithering Logical Operations Scissor Test Scissor Test Stencil Test Stencil Test Alpha Test Alpha Test Fragment Framebuffer

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics 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 CPU DL Poly. Per Vertex Per Vertex Raster Frag FB Pixel Texture

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Next Time (OpenGL Part 3 of 3): Advanced Imaging Imaging Subset  Only available if GL_ARB_imaging defined  Color matrix  Convolutions  Color tables  Histogram  MinMax  Advanced Blending

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics On-Line Resources   start here; up to date specification and lots of sample code  news:comp.graphics.api.opengl    Brian Paul’s Mesa 3D   very special thanks to Nate Robins for the OpenGL Tutors  source code for tutors available here! 

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics Books OpenGL Programming Guide, 5 th – 6 th Edition OpenGL Shading Language, 2 nd Edition OpenGL Programming for the X Window System  includes many GLUT examples Interactive Computer Graphics: A top-down approach with OpenGL, 4 th – 5 th Edition

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics 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)

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics 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  Bump aka displacement – perturb surface normal, calculate lighting  Reflection and transparency  Shadow  Environment

Computing & Information Sciences Kansas State University CG Basics 5 of 8: OpenGL Primer 2 CIS 636/736: (Introduction to) Computer Graphics 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