#ifndef HGL_GRAPH_TILE_DATA_INCLUDE #define HGL_GRAPH_TILE_DATA_INCLUDE #include namespace hgl { namespace graph { class Texture2D; class Renderable; class Bitmap2D; /** * TileData是一种处理将大量等同贴图的管理机制,程序会自动根据显卡最大贴图处理能力来创建尽可能符合的贴图。(注意:Tile的宽高不必是2的幂)。
* Tile的增加删除,程序会做自动排序,尽可能小的影响效能。 */ class TileData ///Tile数据管理 { public: struct Object ///Tile对象 { int index; double fl,ft; double fw,fh; int width,height; }; protected: Texture2D *tile_texture; /// class VertexBuffer2; /** * 渲染Tile为一个2D矩形数据到顶点缓冲区上 * @param obj 要渲制的Tile对象 * @param vertex 渲染到的2d顶点坐标缓冲区 * @param tex_coord 渲染到的贴图坐标缓冲区 * @param left 显示的左边界 * @param top 显示的上边界 * @param scale_width 宽度缩放比 * @param scale_height 高度缩放比 */ template __inline void RenderToVB2DRect( VertexBuffer2 *vertex, VertexBuffer2 *tex_coord, const TileData::Object *obj, const float left, const float top, const float scale_width=1.0f, const float scale_height=1.0f) { if(!obj||!vertex||!tex_coord)return; tex_coord->WriteRect( obj->fl, obj->ft, obj->fw, obj->fh); vertex->WriteRect( left, top, scale_width*float(obj->width), scale_height*float(obj->height)); } }//namespace graph }//namespace hgl #endif//HGL_GRAPH_TILE_DATA_INCLUDE