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

📄 oogltexture.h

📁 此书为Visual C++ 高级编程技术OpenGL篇
💻 H
字号:
// ooglTexture.h
// Declaration of ooglTexture2D Object
// This object is for simplifying two dimensional texture
// manipulation. This is for simple non mip-mapped textures.


////////////////////////////////////////////////////////
// Definition
class ooglTexture2D 
	{
	// Data members
	protected:
		void *_pBitmapData;				// Raw Bitmap Data
		BOOL _bValid;					// Indicates valid texture loaded
		unsigned int _nTextureID;		// Texture name
		unsigned int _nTextureWidth;	// Texture width
		unsigned int _nTextureHeight;	// Texture height
		
	// Methods
	public:
		ooglTexture2D();
		~ooglTexture2D();

		// General Methods		

		inline unsigned int GetTexID()
			{ return _nTextureID;} 
		inline void SetActive() 
			{ glBindTexture(GL_TEXTURE_2D, _nTextureID); }
		
		inline BOOL IsValid() { return _bValid; }

		inline unsigned int GetWidth() { return _nTextureWidth; }
		inline unsigned int GetHeight() { return _nTextureHeight; }
		inline unsigned int GetTextureName() { return _nTextureID; }


		////////////////////////////////////////////////////////
		// OpenGL Wrappings
		inline void TexParameter(GLenum pname, GLint param) 
				{ SetActive(); glTexParameteri(GL_TEXTURE_2D, pname, param); } 

		inline void TexParamter(GLenum pname, GLfloat param)
				{ SetActive(); glTexParameterf(GL_TEXTURE_2D, pname, param); }

		inline void TexParameter(GLenum pname, const GLfloat *param)
				{ SetActive(); glTexParameterfv(GL_TEXTURE_2D, pname, param); }

		inline void TexParameter(GLenum pname, const GLint *param)
				{ SetActive(); glTexParameteriv(GL_TEXTURE_2D, pname, param); }


		// These apply to all texturing operations
		static inline void TexEnv(GLenum pname, GLfloat param)
				{ glTexEnvf(GL_TEXTURE_ENV, pname, param); }

		static inline void TexEnv(GLenum pname, GLint param)
				{ glTexEnvi(GL_TEXTURE_ENV, pname, param); }

		static inline void TexEnv(GLenum pname, const GLfloat *params)
				{ glTexEnvfv(GL_TEXTURE_ENV, pname, params); }

		static inline void TexEnv(GLenum pname, const GLint *params)
				{ glTexEnviv(GL_TEXTURE_ENV, pname, params); }



		static inline void TexGen(GLenum coord, GLenum pname, GLdouble param)
				{ glTexGend(coord, pname, param); }

		static inline void TexGen(GLenum coord, GLenum pname, GLfloat param)
				{ glTexGenf(coord, pname, param); }

		static inline void TexGen(GLenum coord, GLenum pname, GLint param)
				{ glTexGeni(coord, pname, param); }
				
		static inline void TexGen(GLenum coord, GLenum pname, const GLdouble *params)
				{ glTexGendv(coord, pname, params); } 
 
		static inline void TexGen(GLenum coord, GLenum pname, const GLfloat *params)
				{ glTexGenfv(coord, pname, params); }
				
		static inline void TexGen(GLenum coord, GLenum pname, const GLint *params)
				{ glTexGeniv(coord, pname, params); }
				 


		/////////////////////////////////////////////////////////////
		// Load Textures from files
		BOOL LoadBMP(TCHAR* szFileName);
		BOOL LoadBMPA(TCHAR* szFileName, int iblend);
		BOOL LoadBMPA64(TCHAR* szFileName, int iblend);
//		BOOL GetBMP(TCHAR* szFileName, GLubyte* uData, int *w, int *h);

		// Load SGI textures
		// BOOL LoadRGB(TCHAR* szFileName);
		
		// Load DirectX textures
		// BOOL LoadPPM(TCHAR* szFileName);

		// Load RAW DIB?
		// BOOL LoadDIB(TCHAR* szFileName);

		// Load From Resource
		// BOOL LoadBMPResource(UINT uiResourceID);

		// Load Palettized Bitmaps
		// Use LoadBMP, just figure it out along the way

		// Load TGA (very simple format)
		// BOOL LoadTGA(TCHAR* szFileName);

		// Load TIFF 
		// BOOL LoadTIFF(TCHAR* szFileName);

		// Load PCX
		// BOOL LoadPCX(TCHAR* szFileName);
	};

⌨️ 快捷键说明

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