OpenGL Texture Mapping - PowerPoint PPT Presentation

1 / 25
About This Presentation
Title:

OpenGL Texture Mapping

Description:

Repeating and Clamping Texture -1. Using glTexParameter ... Repeating and Clamping Texture -2. Clamping a texture. Repeating and Clamping a texture ... – PowerPoint PPT presentation

Number of Views:248
Avg rating:3.0/5.0
Slides: 26
Provided by: jll7
Category:

less

Transcript and Presenter's Notes

Title: OpenGL Texture Mapping


1
OpenGL Texture Mapping
  • Holmes Chiou
  • 2002

2
Introduction
  • Texture mapping allows you to glue an image of a
    brick wall to a polygon and to draw the entire
    wall as a single polygon

3
Introduction
  • Create a texture object and specify a texture for
    that object
  • Indicate how the texture is to be applied to each
    pixel
  • Enable texture mapping
  • Draw the scene, supplying both texture and
    geometric coordinates

4
Introduction
  • static GLuint texName1
  • glPixelStorei(GL_UNPACK_ALIGNMENT, 1)
  • glGenTextures(1, texName)
  • glBindTexture(GL_TEXTURE_2D, texName0)
  • glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,
    GL_CLAMP)
  • glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,
    GL_CLAMP)
  • glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILT
    ER, GL_NEAREST)
  • glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILT
    ER, GL_NEAREST)
  • glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 32, 32,
    0, GL_RGBA, GL_UNSIGNED_BYTE, texImage32 )
  • glEnable(GL_TEXTURE_2D)

5
Texture Object -1
  • New concept in OpenGL 1.1
  • Operate texture as an object
  • Steps to use texture object
  • Generate texture names
  • Bind texture objects to texture data parameters
  • Rebind the texture objects for applying

6
Texture Object -2
  • Naming a texture object
  • void glGenTextures(GLsizei n, GLuint
    textureNames)
  • glIsTexture() determines if a texture name is
    actually in use

7
Texture Object -3
  • Bind a texture name to a texture object
  • void glBindTexture(GLenum target, GLuint
    textureName)
  • Cleaning up texture objects
  • void glDeleteTextures(GLsizei n, const GLuint
    textureNames)

8
Specifying Texture
  • void glTexImage2D(GLenum target, GLint level,
    GLint internalFormat, GLsizei width, GLsizei
    height, GLint border, GLenum format, GLenum
    type, const GLvoid pixels)
  • Ref. OpenGL Programming Guide for parameters
    detail
  • glPixelStorei(GL_UNPACK_ALIGNMENT, 1)
  • Ex
  • glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 32, 32,
    0, GL_RGBA, GL_UNSIGNED_BYTE, texImage32)

9
Mip-Mapping -1
  • Multi-resolution texture
  • Specified in the level parameter in
    glTexImage2D

10
Mip-Mapping -2
  • For example
  • glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 32, 32,
    0, GL_RGBA, GL_UNSIGNED_BYTE, mipmapImage32)
  • glTexImage2D(GL_TEXTURE_2D, 1, GL_RGBA, 16, 16,
    0, GL_RGBA, GL_UNSIGNED_BYTE, mipmapImage16)
  • glTexImage2D(GL_TEXTURE_2D, 2, GL_RGBA, 8, 8, 0,
    GL_RGBA, GL_UNSIGNED_BYTE, mipmapImage8)
  • glTexImage2D(GL_TEXTURE_2D, 3, GL_RGBA, 4, 4, 0,
    GL_RGBA, GL_UNSIGNED_BYTE, mipmapImage4)
  • glTexImage2D(GL_TEXTURE_2D, 4, GL_RGBA, 2, 2, 0,
    GL_RGBA, GL_UNSIGNED_BYTE, mipmapImage2)
  • glTexImage2D(GL_TEXTURE_2D, 5, GL_RGBA, 1, 1, 0,
    GL_RGBA, GL_UNSIGNED_BYTE, mipmapImage1)

11
Mip-Mapping -3
  • Using GLU helper
  • int gluBuild2DMipmaps(GLenum target, GLint
    components, GLint width,GLint height, GLenum
    format, GLenum type, void data)
  • gluBuild2DMipmaps( GL_TEXTURE_2D, 3, 32, 32,
    GL_RGB, GL_UNSIGNED_BYTE, texImage32 )

12
Filtering -1
  • Magnification Minification
  • Using glTexParameter()
  • glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILT
    ER, GL_NEAREST)
  • glTexParameteri(GL_TEXTURE_2D,
    GL_TEXTURE_MIN_FILTER, GL_NEAREST)

13
Filtering -2
14
Texture Function -1
  • void glTexEnvifv(GLenum target, GLenum pname,
    TYPE param)
  • target must be GL_TEXTURE_ENV
  • If pname is GL_TEXTURE_ENV_MODE, param can be
    GL_DECAL, GL_REPLACE, GL_MODULATE, GL_BLEND
  • If pname is GL_TEXTURE_ENV_COLOR, param is a
    color array. These values are used only if the
    GL_BLEND texture function has been specified

15
Texture Function -2
16
Texture Function -3
17
Assigning Texture Coordinates
  • void glTexCoord1234sifd(TYPEcoords)void
    glTexCoord1234sifdv(TYPE coords)
  • glTexCoord2f( 0.5, 0.5 )
  • Texture Matrix Stack
  • glMatrixMode( GL_TEXTURE )
  • Not mentioned here

18
Repeating and Clamping Texture -1
  • Using glTexParameter()
  • glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,
    GL_REPEAT)
  • glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,
    GL_CLAMP)
  • Repeating a texture

19
Repeating and Clamping Texture -2
  • Clamping a texture
  • Repeating and Clamping a texture

20
Texture Parameters
21
Automatic Texture-Coordinate Generation -1
  • void glTexGenifd(GLenum coord, GLenum pname,
    TYPEparam)void glTexGenifdv(GLenum coord,
    GLenum pname, TYPE param)
  • coord can be GL_S, GL_T, GL_R, GL_Q
  • If pname is GL_TEXTURE_GEN_MODE, param is either
    GL_OBJECT_LINEAR, GL_EYE_LINEAR, GL_SPHERE_MAP
  • If pname is GL_OBJECT_PLANE or GL_EYE_PLANE,
    param is the plane coefficients array
  • Ex
  • plane equation is 1x 2y 3z 0
  • GLfloat plane4 1, 2, 3, 0

22
Automatic Texture-Coordinate Generation -2
  • (a) The texture contour stripes are parallel to
    the plane x 0, (GL_OBJECT_LINEAR).
  • As the object moves, the texture appears to be
    attached to it.
  • (b) A different planar equation (x y z 0)
    is used, so the stripes have a different
    orientation.
  • (c) The texture coordinates are calculated
    relative to eye coordinates and hence aren't
    fixed to the object (GL_EYE_LINEAR).
  • As the object moves, it appears to "swim" through
    the texture

23
Automatic Texture-Coordinate Generation -3
  • Environment Mapping
  • To automatically generate the texture coordinates
    to support environment mapping, use this code in
    your program
  • glTexGeni(GL_S, GL_TEXTURE_GEN_MODE,
    GL_SPHERE_MAP)
  • glTexGeni(GL_T, GL_TEXTURE_GEN_MODE,
    GL_SPHERE_MAP)
  • glEnable(GL_TEXTURE_GEN_S)
  • glEnable(GL_TEXTURE_GEN_T)
  • The GL_SPHERE_MAP constant creates the proper
    texture coordinates for the environment mapping.

24
Automatic Texture-Coordinate Generation -4
  • Sphere map
  • Ref. OpenGL Programming Guide, Chapter 9 for more
    detail

25
Any Question?
  • ?
Write a Comment
User Comments (0)
About PowerShow.com