bool LoadBMPTexture(const char *szFileName, GLenum minFilter, GLenum magFilter, GLenum wrapMode) { GLbyte *pBits; GLint iWidth, iHeight; pBits = gltReadBMPBits(szFileName, &iWidth, &iHeight); if(pBits == NULL) return false; // Set Wrap modes glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrapMode); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrapMode); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, minFilter); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, magFilter); glPixelStorei(GL_UNPACK_ALIGNMENT, 1); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, iWidth, iHeight, 0, GL_BGR, GL_UNSIGNED_BYTE, pBits); free(pBits); switch (minFilter) { case GL_LINEAR_MIPMAP_LINEAR: case GL_LINEAR_MIPMAP_NEAREST: case GL_NEAREST_MIPMAP_LINEAR: case GL_NEAREST_MIPMAP_NEAREST: glGenerateMipmap(GL_TEXTURE_2D); } return true; }
/////////////////////////////////////////////////////////////////////////////////////////////////////// // Load in a BMP file as a texture. Allows specification of the filters and the wrap mode bool LoadBMPTexture(const char *szFileName, GLenum minFilter, GLenum magFilter, GLenum wrapMode) { GLbyte *pBits; GLint iWidth, iHeight; pBits = gltReadBMPBits(szFileName, &iWidth, &iHeight); if(pBits == NULL) return false; // Set Wrap modes glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrapMode); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrapMode); // Do I need to generate mipmaps? #ifndef OPENGL_ES if(minFilter == GL_LINEAR_MIPMAP_LINEAR || minFilter == GL_LINEAR_MIPMAP_NEAREST || minFilter == GL_NEAREST_MIPMAP_LINEAR || minFilter == GL_NEAREST_MIPMAP_NEAREST) glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE); #endif glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, minFilter); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, magFilter); #ifndef OPENGL_ES glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, iWidth, iHeight, 0, GL_BGR, GL_UNSIGNED_BYTE, pBits); #else glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, iWidth, iHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, pBits); glGenerateMipmap(GL_TEXTURE_2D); #endif return true; }
bool LoadBMPTexture(const char *bmpFileName,GLenum minFilter,GLenum magFilter,GLenum wrapMode) { GLbyte* pBits; GLint width,height; pBits = gltReadBMPBits(bmpFileName,&width,&height); //texure wrap mode glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,wrapMode); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,wrapMode); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,minFilter); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,magFilter); glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,width,height,0,GL_BGR,GL_UNSIGNED_BYTE,pBits); if(minFilter == GL_LINEAR_MIPMAP_LINEAR || minFilter == GL_LINEAR_MIPMAP_NEAREST || minFilter == GL_NEAREST_MIPMAP_LINEAR || minFilter == GL_NEAREST_MIPMAP_NEAREST) glGenerateMipmap(GL_TEXTURE_2D); return true; }
GLuint LoadBMPTexture(const char *szFileName) { GLbyte *pBits; GLint iWidth, iHeight; GLuint texture; pBits = gltReadBMPBits(szFileName, &iWidth, &iHeight); if(pBits == NULL) return false; glGenTextures(1,&texture); glBindTexture(GL_TEXTURE_2D,texture); // Set Wrap modes glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); // Do I need to generate mipmaps? glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, iWidth, iHeight, 0, GL_BGR, GL_UNSIGNED_BYTE, pBits); return texture; }