// 获得一个字符位图 bool LanguageManager::GetImage(char c,unsigned char *pBuff,int &pixel_x,int &pixel_y) { FT_Library ftLibrary; FT_Face ftFace; int error; error=FT_Init_FreeType(&ftLibrary); if(error)return false; error=FT_New_Face(ftLibrary,"/Projects/AppleGothic.ttf" ,0, &ftFace); if(error) return false; int iFaceNum = ftFace->num_faces; int iGlyphsNum = ftFace->num_glyphs; FT_Set_Pixel_Sizes(ftFace, 0, 20); // unsigned int glyphs_index = FT_Get_Char_Index(ftFace, 'A'); error = FT_Load_Glyph(ftFace, glyphs_index, 0); if(error) return false; if(ftFace->glyph->format != FT_GLYPH_FORMAT_BITMAP) { error = FT_Render_Glyph(ftFace->glyph, FT_RENDER_MODE_NORMAL); if(error) return false; } FT_Bitmap ftBitmap = ftFace->glyph->bitmap; pBuff = ftBitmap.buffer; int left=ftFace->glyph->bitmap_left; int top = ftFace->glyph->bitmap_top; // // Create dynamic texture, size it and wotnot // Ogre::TexturePtr mTexture = Ogre::TextureManager::getSingleton().createManual( // "DynTexture", // Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, // Ogre::TEX_TYPE_2D, // pixel_x, // pixel_y, // 24, // 0, // Ogre::PF_BYTE_RGBA, // Ogre::TU_DYNAMIC_WRITE_ONLY ); // Load external image data into Ogre::Image object pixel_x = ftBitmap.width; pixel_y = ftBitmap.rows; Ogre::Image texImg; texImg.loadDynamicImage( ftBitmap.buffer, ftBitmap.width, ftBitmap.rows, 1, Ogre::PF_L8 ); // Write it to file to check the image isn't horrible texImg.save( "/Projects/texImg.bmp" ); // Load the image to the texture //mTexture->loadImage( texImg ); }