Font
次のようなクラスがあるとします。
const unsigned int MAX_CHAR = 256; //better than dynamic I think?
struct BMchar
{
int x_ofs, y_ofs;
_uint32 x, y;
_uint32 width, height;
_uint32 x_advance;
};
struct BMkerninfo
{
_ushort first, second;
_ushort kerning;
};
class BM_FONT_CALL BMfont
{
public:
BMfont();
~BMfont(); //what will I free?
BMfont_Status Load(const char* fontName);
public:
float scale;
_uint32 tabSize;
_uint32 backTexture;
_uint32 frontTexture;
_uint32 textureSheet;
bool enableMasking;
bool hasBackground;
_uint32 base;
_uint32 lineHeight;
_uint32 pages;
_uint32 scaleW, scaleH;
_uint32 kerninfo_count;
BMkerninfo *kerninfo; //unused
BMchar chars[MAX_CHAR];
float texCoordBuff[MAX_CHAR * 8];
};
そして、私はクラスを持っていますLabel
:
class SWC_DLL SWC_Label
{
public:
SWC_Label ();
public:
void ShowText (const Point& basePoint, int baseW, int baseH);
public:
std::string text;
Point textCoord;
BMfont font;
T_Alignment textAlignment;
};
次に、これらすべてについて私が心配しているのは、ご覧のとおり、BMfont
クラスが多くのリソースを使用していることです。SWC_Label
クラスをクラスに継承しSWC_Button
ます(はい、ラベル/テキストが付いたボタンです)。
今、私はこれSWC_Button
に別のフォントを持つ機能を持たせたいと思っています。このようなことを行うためのより良いメモリ効率の良い方法は何ですか?定義された数の使用可能なフォントのみを作成する(クラスラベルで静的フォントを作成する)などの制限を行う必要がありますか?
注: OpenGL を使用して UI を作成しています