Texture Mapping
Introduction What is Texture Mapping? Types of Texture Mapping –1D, 2D and 3D SDL and OpenGL
Getting Your Feet Wet Five Steps in Getting Texture Mapping to Work –1. Load the Bitmap –2. Generate the Texture Handle –3. Bind and Configure –4. Build Texture in OpenGL –5. Bind and Use
A Little More Detail 1. Load Bitmap 2. Generate a Texture Handle –glGenTextures(1, &temptex); 3. Bind and Configure –glBindTexture (GL_TEXTURE_2D, nNewTextureID); –glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); –glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); –glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); –glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); 4. Build the Texture in OpenGL –gluBuild2DMipmaps (GL_TEXTURE_2D, nBPP, nWidth, nHeight, –(nBPP == 3 ? GL_RGB : GL_RGBA),GL_UNSIGNED_BYTE, –pData);
In Depth Discussion The Bitmap File Format –File Header Size and Type of File –Info Header Image dimensions Bits per Pixel (BPP) –Image Data(unsigned char) What can be used as a Texture?
In Depth Discussion Texture Handle Generation –glGenTextures(1, &temptex); –GL_TEXTURE_1D and GL_TEXTURE_3D Texture Binding –glBindTexture (GL_TEXTURE_2D, TextureID); Environment Settings –glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); –GL_DECAL and GL_BLEND
In Depth Discussion Texture Wrapping Parameters –glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); –glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); –Also GL_CLAMP
In Depth Discussion Texture Resizing Filters –glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST) –GL_LINEAR, GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST_MIPMAP_LINEAR, GL_LINEAR_MIPMAP_NEAREST, and GL_LINEAR_MIPMAP_LINEAR –glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST) –GL_LINEAR
In Depth Discussion What are Mipmaps? Building the Texture –gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGB, width, height, GL_RGB, GL_UNSIGNED_BYTE, data) Using the Texture –glTexCoord2f(0.0, 1.0); glVertex3i(-1, 1, 1)
Texture and Lighting Four Steps for Lighting –Calculate Normals –Position Light –Choose Shading Model –Set Material Setting Materials –glMaterialfv(GL_FRONT, GL_AMBIENT, matAmbient) –glMaterialfv(GL_FRONT, GL_DIFFUSE, matDiffuse)
Texture Transparency The Blending Function –glEnable(GL_BLEND); –glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); –glColor4f(1.0f, 1.0f, 1.0f, 0.5) Depth Testing Issues
Playing with Texture Coordinates Easy as Pie Take your original Texture coordinates and move them around Use Texture Coordinates to only show part of the image Textured Fonts
Multi-Pass Multi-Texturing What is Multi-Texturing Why not Single Pass Multi-Texturing How to do Multi-Pass Multi-Texturing –1. Draw your object with base texture –2. Draw your object again with blended texture –3. Repeat step 2 till satisfied
Advanced Topics Other uses of Texture Mapping –Imposters –Lightmapping –Shadowmapping –Environment Mapping –Projective Texturing Procedural Texture Generation