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() 
{ 
 
}