⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 texture.h

📁 《OpenGL游戏编程》这本书的配套源码。
💻 H
字号:
//========================================================
/**
*  @file      Texture.h
*
*  项目描述: 构造游戏引擎
*  文件描述:  纹理类
*  适用平台: Windows98/2000/NT/XP
*  
*  作者:     WWBOSS
*  电子邮件:  wwboss123@gmail.com
*  创建日期: 2007-07-26	
*  修改日期: 2007-07-26
*
*/ 
//========================================================


#ifndef _TEXTURE_H_
#define _TEXTURE_H_

#include "image.h"


/**\brief
 * 纹理处理类
 */
class CTexture
{
public:
	CTexture(void);
	~CTexture(void);

	unsigned int GetTextureId(int i);

	void SetTexCoord(float u , float v);
	
	void Bind(int i);
	
	BOOL InitTexture(char * filename,BOOL bAlpha=FALSE,BOOL bTga=FALSE);



private:
	void GetImageData(char *filename , BOOL bAlpha , BOOL bTga);
	
	int GetPower(int iSize);
	
	unsigned int tex[3];
	
	int m_iWidth;
	
	int m_iHeight;

	float fScaleWidth;
	
	float fScaleHeight;

	unsigned char *m_pImageData;
	
	GLint color_type;
	
	GLenum color_format;
	
	BOOL bScale;
	
	CImage *m_pImage;

};





//////////////////////////////////////////////////////////
//--------------------inline函数实现---------------------

inline unsigned int CTexture::GetTextureId(int i)
{
	if(i<0)i=0;if(i>2)i=2;
	return tex[i];
}


inline void CTexture::SetTexCoord(float u , float v)
{
	u = u * fScaleWidth;
	v = v * fScaleHeight;
	glTexCoord2d(u ,v);
}


inline void CTexture::Bind(int i)
{
	if(i<0)i=0;
	if(i>2)i=2;
	glBindTexture(GL_TEXTURE_2D ,tex[i]);
}


#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -