Four Blocks -

Four Blocks -

Fall 2011 CS 480/680 Computer Graphics OpenGL Texture Mapping Dr. Frederick C Harris, Jr. Objectives Introduce the OpenGL texture functions and options Basic Stragegy

Three steps to applying a texture 1. specify the texture read or generate image assign to texture enable texturing 2. assign texture coordinates to vertices Proper mapping function is left to application 3. specify texture parameters wrapping, filtering Texture Mapping y z

x geometry t image s display Texture Example The texture (below) is a 256 x 256 image that has

been mapped to a rectangular polygon which is viewed in perspective Texture Mapping and the OpenGL Pipeline Images and geometry flow through separate pipelines that join during fragment processing complex textures do not affect geometric complexity vertices image

geometry pipeline pixel pipeline fragment processor Specifying a Texture Image Define a texture image from an array of texels (texture elements) in CPU memory Glubyte my_texels[512][512]; Define as any other pixel map Scanned image

Generate by application code Enable texture mapping glEnable(GL_TEXTURE_2D) OpenGL supports 1-4 dimensional texture maps Define Image as a Texture glTexImage2D( target, level, components, w, h, border, format, type, texels ); target: type of texture, e.g. GL_TEXTURE_2D level: used for mipmapping (discussed later) components: elements per texel w, h: width and height of texels in pixels border: used for smoothing (discussed later)

format and type: describe texels texels: pointer to texel array glTexImage2D(GL_TEXTURE_2D, 0, 3, 512, 512, 0, GL_RGB, GL_UNSIGNED_BYTE, my_texels); Mapping a Texture Based on parametric texture coordinates glTexCoord*() specified at each vertex Texture Space t 0, 1 Object Space

1, 1 (s, t) = (0.2, 0.8) A a c (0.4, 0.2) b 0, 0 B

1, 0 s C (0.8, 0.4) Typical Code offset = 0; GLuint vPosition = glGetAttribLocation( program, "vPosition" ); glEnableVertexAttribArray( vPosition ); glVertexAttribPointer( vPosition, 4, GL_FLOAT, GL_FALSE, 0,BUFFER_OFFSET(offset) ); offset += sizeof(points); GLuint vTexCoord =

glGetAttribLocation( program, "vTexCoord" ); glEnableVertexAttribArray( vTexCoord ); glVertexAttribPointer( vTexCoord, 2,GL_FLOAT, GL_FALSE, 0, BUFFER_OFFSET(offset) ); Interpolation OpenGL uses interpolation to find proper texels from specified texture coordinates texture stretched Can be distortions good selection poor selection of tex coordinates of tex coordinates

over trapezoid showing effects of bilinear interpolation Texture Parameters OpenGL has a variety of parameters that determine how texture is applied Wrapping parameters determine what happens if s and t are outside the (0,1) range Filter modes allow us to use area averaging instead of point samples Mipmapping allows us to use textures at multiple resolutions Environment parameters determine how

texture mapping interacts with shading Wrapping Mode Clamping: if s,t > 1 use 1, if s,t <0 use 0 Wrapping: use s,t modulo 1 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP ) glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT ) t s texture

GL_REPEAT wrapping GL_CLAMP wrapping Magnification and Minification More than one texel can cover a pixel (minification) or more than one pixel can cover a texel (magnification) Can use point sampling (nearest texel) or linear filtering ( 2 x 2 filter) to obtain texture values Texture Polygon

Magnification Texture Polygon Minification Filter Modes Modes determined by glTexParameteri( target, type, mode ) glTexParameteri(GL_TEXTURE_2D, GL_TEXURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D,

GL_TEXURE_MIN_FILTER, GL_LINEAR); Note that linear filtering requires a border of an extra texel for filtering at edges (border = 1) Mipmapped Textures Mipmapping allows for prefiltered texture maps of decreasing resolutions Lessens interpolation errors for smaller textured objects Declare mipmap level during texture definition glTexImage2D( GL_TEXTURE_*D, level, )

Example point sampling mipmapped point sampling linear filtering mipmapped linear

filtering Texture Functions Controls how texture is applied glTexEnv{fi}[v]( GL_TEXTURE_ENV, prop, param ) GL_TEXTURE_ENV_MODE modes GL_MODULATE: modulates with computed shade GL_BLEND: blends with an environmental color GL_REPLACE: use only texture color GL(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); Set blend color with GL_TEXTURE_ENV_COLOR

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

Generating Texture Coordinates OpenGL can generate texture coordinates automatically glTexGen{ifd}[v]() specify a plane generate texture coordinates based upon distance from the plane generation modes GL_OBJECT_LINEAR GL_EYE_LINEAR GL_SPHERE_MAP (used for environmental maps)

Texture Objects Texture is part of the OpenGL state If we have different textures for different objects, OpenGL will be moving large amounts data from processor memory to texture memory Recent versions of OpenGL have texture objects one image per texture object Texture memory can hold multiple texture objects

Applying Textures II 1. 2. 3. 4. 5. 6. 7. 8. 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 Other Texture Features Environment Maps Start with image of environment through a wide angle lens Can be either a real scanned image or an image created in OpenGL

Use this texture to generate a spherical map Use automatic texture coordinate generation Multitexturing Apply a sequence of textures through cascaded texture units

Recently Viewed Presentations

  • The Free Will Defence -

    The Free Will Defence -

    The Free Will Defence (FWD) Free Will is an essential theme in Augustine's theodicy as evil is a consequence of a freely made decision to eat the fruit. It is also central to Hick´s Soul Making theodicy as we must...
  • Na 40. sjednici Savjeta Agencije za sprjeavanje korupcije

    Na 40. sjednici Savjeta Agencije za sprjeavanje korupcije

    Broj saopštenja Agencije na internet stranici ovog organa u I kvatalu iznosi 46; U I kvartalu proaktivno su date 4 izjave predstavnika Agencije. SPI: Broj zahtjeva za slobodan pristup informacijama u I kvartalu - 12; Na sve navedene zahtjeve odgovoreno....
  • Hawaiian Influence on HCE Intonation - University of Calgary ...

    Hawaiian Influence on HCE Intonation - University of Calgary ...

    Kelly Murphy. University of Calgary . SALSA XX Symposium University of Texas . Hawaiian Influence on HCE Intonation. Hawaiʻi Creole English (HCE) has a falling Yes/No Question intonation. Many languages in contact in Hawaiʻi- Where does HCE get this intonation...
  • What Are Unethical Business Practices?

    What Are Unethical Business Practices?

    Order the supervisor to call an all-hands meeting and apologize for the unintended slights No, because there is nothing wrong with calling a female employee "Babe" or other endearment BUSINESS ETHICS: APPROACHES COMPLIANCE-BASED Prevent, Detect and Punish Legal Violations INTEGRITY...
  • Planning &amp; Law Division of the American Planning Association ...

    Planning & Law Division of the American Planning Association ...

    City of Holly Springs Miss. (5th Cir. 2012) "The 'less than equal terms' must be measured by the ordinance itself and the criteria by which it treats institutions differently. In accord with this instruction, and building on the similar approaches...


    Host 2 LegalShield calls (team call, PCC, training call) with a minimum of 5 LegalShield associates participating each month; or. You must pre-register and attend the International Convention or a Company Sponsored ED Retreat or the B2B Conference within a...
  • Introduction to Ethics

    Introduction to Ethics

    Therefore, Kantianism, Social Contract, and Rule Utilitarianism all use moral rules to determine if an action is moral. Act Utilitarianism adds up the total good achieved. Kantianism and Social Contract theory focus on the individual decision makers (The Deciders) while...
  • ROOTS OF EGYPTIAN JEWELRY Introduction  Since the dawn

    ROOTS OF EGYPTIAN JEWELRY Introduction Since the dawn

    Princess Khnumit Crown The crown of Princess Khnumit found on her mummy. It was worn by the princess Princess Khnumit Crown Queen Ahhotep Bead Bracelet New kingdom Bracelet is one of a pair, Found along with other jewels inside her...