www.pudn.com > VRGIS-2005.rar > Texture.cpp, change:2002-08-19,size:1496b
// Texture.cpp: implementation of the CTexture class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "dem_test.h"
#include "Texture.h"
#include "gl/gl.h"
#include "gl/glu.h"
#include "gl/glaux.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CTexture::CTexture(char *TexImage,int flag)
{
AUX_RGBImageRec *tree1;
unsigned char *tree;
tree1 = auxDIBImageLoad(TexImage);
if(tree1 == NULL) return;
t_width=tree1->sizeX;
t_height=tree1->sizeY;
//alpha=flag;
if(alpha==1)
{
Tex=tree1->data;
}
else
{
tree=(unsigned char *)malloc(tree1->sizeX*tree1->sizeY*4);
int i,j;
for(i=0;i<tree1->sizeX;i++)
for(j=0;j<tree1->sizeY;j++)
{
tree[(i*tree1->sizeY+j)*4]=tree1->data[(i*tree1->sizeY+j)*3];
tree[(i*tree1->sizeY+j)*4+1]=tree1->data[(i*tree1->sizeY+j)*3+1];
tree[(i*tree1->sizeY+j)*4+2]=tree1->data[(i*tree1->sizeY+j)*3+2];
if(tree1->data[(i*tree1->sizeY+j)*3]==0&&
tree1->data[(i*tree1->sizeY+j)*3+1]==0&&
tree1->data[(i*tree1->sizeY+j)*3+2]==0)
{
tree[(i*tree1->sizeY+j)*4+3]=0;
}
else
tree[(i*tree1->sizeY+j)*4+3]=255;
}
free(tree1);
Tex=tree;
}
}
CTexture::~CTexture()
{
}