texture.h
来自「《光线引擎演示程序》执行程序+源代码,《光线引擎演示程序》执行程序+源代码」· C头文件 代码 · 共 351 行
H
351 行
/*==========================================================================;
*
* 光线游戏引擎(Light Game Engine)
*
* 版权所有 (C) 2005-2007 康 旭。 保留所有权利。
* Copyright (C) KangXu. All Rights Reserved.
*
* 文件: texture.h
* 内容: 纹理函数,现在能读取 25 种 .bmp, .cut, .dds, .doom, .gif, .ico, .jpg, .lbm, .mdl, .mng, .pal, .pbm, .pcd, .pcx, .pgm, .pic, .png, .ppm, .psd, .psp, .raw, .sgi, .tga 和 .tif .hdr 文件。
支持保存的格式有 15 种: .bmp, .dds, .h, .jpg, .pal, .pbm, .pcx, .hdr, .pgm,.png, .ppm, .raw, .sgi, .tga 和 .tif.
*
****************************************************************************/
/*! \file texture.h * 纹理函数. * 此文件是纹理函数头文件. */// 指定纹理原点
#define LIGHT_ORIGIN_UPPER_LEFT 0
#define LIGHT_ORIGIN_LOWER_LEFT 1
// 纹理层
#define LIGHT_TEXTURE_LAYER_2D 0
#define LIGHT_TEXTURE_LAYER_CUBE_MAP_POSITIVE_X 3
#define LIGHT_TEXTURE_LAYER_CUBE_MAP_NEGATIVE_X 4
#define LIGHT_TEXTURE_LAYER_CUBE_MAP_POSITIVE_Y 5
#define LIGHT_TEXTURE_LAYER_CUBE_MAP_NEGATIVE_Y 6
#define LIGHT_TEXTURE_LAYER_CUBE_MAP_POSITIVE_Z 7
#define LIGHT_TEXTURE_LAYER_CUBE_MAP_NEGATIVE_Z 8
// 图像文件格式
#define LIGHT_AUTO 0x0000
#define LIGHT_BMP 0x0420
#define LIGHT_CUT 0x0421
#define LIGHT_DOOM 0x0422
#define LIGHT_DOOM_FLAT 0x0423
#define LIGHT_ICO 0x0424
#define LIGHT_JPG 0x0425
#define LIGHT_JFIF 0x0425
#define LIGHT_LBM 0x0426
#define LIGHT_PCD 0x0427
#define LIGHT_PCX 0x0428
#define LIGHT_PIC 0x0429
#define LIGHT_PNG 0x042A
#define LIGHT_PNM 0x042B
#define LIGHT_SGI 0x042C
#define LIGHT_TGA 0x042D
#define LIGHT_TIF 0x042E
#define LIGHT_CHEAD 0x042F
#define LIGHT_RAW 0x0430
#define LIGHT_MDL 0x0431
#define LIGHT_WAL 0x0432
#define LIGHT_LIF 0x0434
#define LIGHT_MNG 0x0435
#define LIGHT_JNG 0x0435
#define LIGHT_GIF 0x0436
#define LIGHT_DDS 0x0437
#define LIGHT_DCX 0x0438
#define LIGHT_PSD 0x0439
#define LIGHT_EXIF 0x043A
#define LIGHT_PSP 0x043B
#define LIGHT_PIX 0x043C
#define LIGHT_PXR 0x043D
#define LIGHT_XPM 0x043E
#define LIGHT_HDR 0x043F
#define LIGHT_JASC_PAL 0x0475
/*! \class LightTexture * \brief 纹理类 * * 本类负责纹理的读取、创建和管理。支持 25 种图像文件 .bmp, .cut, .dds, .doom, .gif, .ico, .jpg, .lbm, .mdl, .mng, .pal,
* .pbm, .pcd, .pcx, .pgm, .pic, .png, .ppm, .psd, .psp, .raw, .sgi, .tga, .tif 和 .hdr 的读取,支持 15 种图像文件 .bmp, * .dds, .h, .jpg, .pal, .pbm, .pcx, .hdr, .pgm,.png, .ppm, .raw, .sgi, .tga 和 .tif 的保存。每个 LightTexture 实例都必 * 须通过 LightEngine 类的 NewTexture 方法分配。 */
class LightTexture
{
public:
/*! \fn void SetOrigin( int mode ) = 0 * \brief 设置纹理原点,当读取纹理时使用 * * 设置纹理原点,当读取纹理时使用 * * \param int mode 原点位置 * * \return 无 * * \see
*/
virtual void SetOrigin( int mode ) = 0;
/*! \fn int GetOrigin( void ) = 0 * \brief 查询纹理原点 * * 查询纹理原点 * * \param 无 * * \return 返回纹理原点 * * \see
*/
virtual int GetOrigin( void ) = 0;
/*! \fn int NonPowerOfTwo( int non_power2 ) = 0 * \brief 非 2 次幂纹理设置 * * 非 2 次幂纹理设置 * * \param int non_power2 如果为 0 则为 2 次幂纹理,否则为非 2 次幂纹理 * * \return 如果函数调用成功,返回非零值;如果函数调用失败,返回零。 * * \see
*/
virtual int NonPowerOfTwo( int non_power2 ) = 0;
/*! \fn void SetLayer( int layer ) = 0 * \brief 设置当前纹理层,当读取纹理时使用 * * 设置当前纹理层,当读取纹理时使用 * * \param int layer 当前纹理层 * * \return 如果函数调用成功,返回非零值;如果函数调用失败,返回零。 * * \see
*/
virtual void SetLayer( int layer ) = 0;
/*! \fn int GetLayer( void ) = 0 * \brief 查询当前纹理层 * * 查询当前纹理层 * * \param 无 * * \return 返回当前纹理层。 * * \see
*/
virtual int GetLayer( void ) = 0;
/*! \fn int Load( const char *filename ) = 0 * \brief 将纹理文件读入内存 * * 将纹理文件读入内存,现在能读取 25 种 .bmp, .cut, .dds, .doom, .gif, .ico, .jpg, .lbm, .mdl, .mng, .pal, .pbm, .pcd, .pcx, .pgm, .pic, .png, .ppm, .psd, .psp, .raw, .sgi, .tga 和 .tif .hdr 文件。 * * \param const char *filename 文件纹理名 * * \return 如果函数调用成功,返回非零值;如果函数调用失败,返回零。 * * \see
*/
virtual int Load( const char *filename ) = 0;
/*! \fn int Build( int width, int height, unsigned char *rgba ) = 0 * \brief 从内存中创建纹理 * * 从内存中创建纹理 * * \param int width 纹理宽度 * * \param int height 纹理高度 * * \param unsigned char *rgba 纹理数据(RGBA) * * \return 如果函数调用成功,返回非零值;如果函数调用失败,返回零。 * * \see
*/
virtual int Build( int width, int height, unsigned char *rgba ) = 0;
/*! \fn int Create( int width, int height, int type ) = 0 * \brief 创建新纹理 * * 创建新纹理 * * \param int width 纹理宽度 * * \param int height 纹理高度 * * \param int type 纹理类型, 0 为普通纹理, 1 为可渲染纹理 * * \return 如果函数调用成功,返回非零值;如果函数调用失败,返回零。 * * \see
*/
virtual int Create( int width, int height, int type ) = 0;
/*! \fn int Grid( int width, int height, int numframe ) = 0 * \brief 设置栅格动画 * * 在现有纹理的基础上设置栅格动画。 * * \param int width 栅格动画的宽度 * * \param int height 栅格动画的高度 * * \param int numframe 动画帧数 * * \return 如果函数调用成功,返回非零值;如果函数调用失败,返回零。 * * \see
*/
virtual int Grid( int width, int height, int numframe ) = 0;
/*! \fn int GetSize( LPSIZE lpsize ) = 0 * \brief 查询纹理原始的宽度和高度 * * 查询纹理原始的宽度和高度 * * \param LPSIZE lpsize 返回纹理大小的数据指针 * * \return 如果函数调用成功,返回非零值;如果函数调用失败,返回零。 * * \see
*/
virtual int GetSize( LPSIZE lpsize ) = 0;
/*! \fn int GetSizePower2( LPSIZE lpsize ) = 0 * \brief 查询纹理实际(二次幂)的宽度和高度 * * 查询纹理实际(二次幂)的宽度和高度 * * \param LPSIZE lpsize 返回纹理实际(二次幂)的大小的数据指针 * * \return 如果函数调用成功,返回非零值;如果函数调用失败,返回零。 * * \see
*/
virtual int GetSizePower2( LPSIZE lpsize ) = 0;
/*! \fn bool IsValid( void ) = 0 * \brief 查询纹理是否有效 * * 查询纹理是否有效 * * \param 无 * * \return 如果函数调用成功,返回非零值;如果函数调用失败,返回零。 * * \see
*/
virtual bool IsValid( void ) = 0;
/*! \fn int Speed( int speed ) = 0 * \brief 设置动画播放速度 * * 设置动画播放速度 * * \param int speed 动画播放的速度,用每帧持续的时间表示,以千分之一秒为单位。 * * \return 如果函数调用成功,返回非零值;如果函数调用失败,返回零。 * * \see
*/
virtual int Speed( int speed ) = 0;
/*! \fn int Active( void ) = 0 * \brief 将纹理激活为当前纹理 * * 将纹理激活为当前纹理,如果是动画纹理,则自动播放动画。 * * \param 无 * * \return 如果函数调用成功,返回非零值;如果函数调用失败,返回零。 * * \see
*/
virtual int Active( void ) = 0;
/*! \fn int ActiveFrame( int frame ) = 0 * \brief 将纹理的指定帧激活为当前纹理 * * 将纹理的指定帧激活为当前纹理。 * * \param int frame 要激活的纹理帧,如果该帧不存在,则该帧被指定为写入、渲染和保存的目标帧。 * * \return 如果函数调用成功,返回非零值;如果函数调用失败,返回零。 * * \see
*/
virtual int ActiveFrame( int frame ) = 0;
/*! \fn int Render( bool RenderToSelf ) = 0 * \brief 渲染到纹理 * * 渲染到纹理 * * \param bool RenderToSelf 是否渲染到纹理, 1 为渲染到纹理, 0 为渲染到屏幕 * * \return 如果函数调用成功,返回非零值;如果函数调用失败,返回零。 * * \see
*/
virtual int Render( bool RenderToSelf ) = 0;
/*! \fn int Save( const char *filename, int format, int color ) = 0 * \brief 将纹理颜色数据保存到指定的图像文件中。 * * 将纹理颜色数据保存到指定的图像文件中。如果是动画纹理,则保存活动帧。 * 支持 15 种图像文件 .bmp, .dds, .h, .jpg, .pal, .pbm, .pcx, .hdr, .pgm,.png, .ppm, .raw, .sgi, .tga 和 .tif 的保存 * * \param const char *filename 要保存颜色数据的图像文件名 * * \param int format 图像文件的格式,如果是 LIGHT_AUTO 则根据文件扩展名确定。 * * \param int color 图像文件的颜色模式 * * \return 如果函数调用成功,返回非零值;如果函数调用失败,返回零。 * * \see
*/
virtual int Save( const char *filename, int format, int color ) = 0;
/*! \fn int Unload( void ) = 0 * \brief 从内存中释放纹理 * * 从内存中释放纹理 * * \param 无 * * \return 如果函数调用成功,返回非零值;如果函数调用失败,返回零。 * * \see
*/
virtual int Unload( void ) = 0;
/*! \fn int Delete( void ) = 0 * \brief 删除纹理 * * 删除纹理 * * \param 无 * * \return 如果函数调用成功,返回非零值;如果函数调用失败,返回零。 * * \see
*/
virtual int Delete( void ) = 0;
};
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?