00001
#include "texture_2d.h"
00002
#include "texture_manager.h"
00003
#include "window_sdl.h"
00004
00005 CTexture2D::CTexture2D (
const char* szFilename)
00006 {
00007 _Load (szFilename);
00008 }
00009
00010 CTexture2D::~CTexture2D ()
00011 {
00012 glDeleteTextures (1, &m_uiTexture);
00013 }
00014
00015
void CTexture2D::_Load (
const char* szFilename)
00016 {
00017
m_szFilename = szFilename;
00018
00019
00020 gtl::CImageTGA Image (szFilename);
00021
00022 glGenTextures (1, &m_uiTexture);
00023
00024 glBindTexture (GL_TEXTURE_2D, m_uiTexture);
00025
00026 glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
00027 glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
00028
00029 glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
00030 glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_R, GL_REPEAT);
00031 glTexParameteri (GL_TEXTURE_2D, GL_GENERATE_MIPMAP_SGIS, GL_TRUE);
00032
00033
00034
00035
00036
switch (Image.GetTexelSize ())
00037 {
00038
default:
00039
break;
00040
case 24:
00041 glTexImage2D (GL_TEXTURE_2D, 0, 3, Image.GetSizeX (), Image.GetSizeY (), 0,
GL_BGR, GL_UNSIGNED_BYTE, Image.GetData ());
00042
break;
00043
case 32:
00044 glTexImage2D (GL_TEXTURE_2D, 0, 4, Image.GetSizeX (), Image.GetSizeY (), 0,
GL_BGRA, GL_UNSIGNED_BYTE, Image.GetData ());
00045
break;
00046 }
00047 }
00048
00049 void CTexture2D::Bind ()
const
00050
{
00051 glBindTexture (GL_TEXTURE_2D, m_uiTexture);
00052 }
00053
00054 ETextureType CTexture2D::Type ()
const
00055
{
00056
return TEXTURE_TYPE_TEXTURE_2D;
00057 }