가정하자 나는이처럼 보이는 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
에는 다른 글꼴을 사용하는 기능이 필요합니다. 이와 같은 일을하는 데 더 효율적이고 메모리 효율적인 방법은 무엇입니까? 제한된 수의 글꼴을 사용할 수 있나요? (클래스 레이블에 정적 글꼴 만들기)?
참고 : Factory
및 FlyWeight
: 나는 OpenGL을
'std :: map _fonts'이 처리하는 것은 무엇입니까? 내가 그들을 사용하지 않기 때문에 죄송합니다 귀하의 예제 코드에 혼란스러워. 그 두 개의 매개 변수를 설명해 주시겠습니까? –
mr5
@ mr5 : "글꼴 이름"-> "글꼴 내용"맵입니다. 서신을 어딘가에 보관해야합니다. 이렇게하면 글꼴 이름을 물어 보면 교환 된 'SharedFontPtr'을 얻을 수 있습니다. –
'_fonts '즉, 검색하고 넣는 것을 어떻게 조작합니까? 더 많은 샘플 코드를 제공 할 수 있습니까? 'std :: map'에있는 멤버에 접근하는 방법을 아직도 모르므로 – mr5