[程式] Freetype問題
我想要用Freetype2.3.5在Opengl上顯示中文字
填入材質時出現問題
我用Freetype抓出來的文字圖檔(FT_Bitmap)
直接用抓取bitmap.width與bitmap.rows當做bitmap大小
填入記憶體中
結果中文字左邊會有一大片是"空白"
這是什麼原因?
我填入記憶體的方式有錯誤嗎?
以下是我寫的內容:
if( FT_Load_Char(m_FT_Face, ch, FT_LOAD_NO_BITMAP )) //讀成向量字
return 0;
FT_Glyph glyph;
if(FT_Get_Glyph( m_FT_Face->glyph, &glyph ))
return 0;
//取得Bitmap資料
if ( glyph->format != FT_GLYPH_FORMAT_BITMAP ) //只是確保轉型成功,若型態對的話不會做任何動作
FT_Glyph_To_Bitmap( &glyph, ft_render_mode_normal, 0, 1 );
FT_BitmapGlyph bitmap_glyph = (FT_BitmapGlyph)glyph;
FT_Bitmap& bitmap=bitmap_glyph->bitmap;
int width = bitmap.width;
int height = bitmap.rows;
//填入材質
glGenTextures(1,&charTex.m_texID);
glBindTexture(GL_TEXTURE_2D,charTex.m_texID);
char* pBuf = new char[width * height * 4];
int k=0;
for( j=0; j < height ; j++)
{
for( i=0; i < width; i++)
{
unsigned char _vl=0;
_vl = bitmap.buffer[i + (bitmap.width)*j ];
pBuf[(k) ] = _vl ;
pBuf[(k)+1] = _vl ;
pBuf[(k)+2] = _vl ;
pBuf[(k)+3] = 0xff;
k+=4;
}
}
//設定材質
glTexImage2D( GL_TEXTURE_2D,0,GL_RGBA,width, height,0,GL_RGBA,GL_UNSIGNED_BYTE,pBuf);
glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
delete[]pBuf;
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.192.167.209
→
01/12 23:05, , 1F
01/12 23:05, 1F
→
01/12 23:06, , 2F
01/12 23:06, 2F
→
01/13 09:18, , 3F
01/13 09:18, 3F
→
01/13 09:20, , 4F
01/13 09:20, 4F
推
01/13 09:26, , 5F
01/13 09:26, 5F