2010-07-07 71 views
1

我無法繪製的字體用alpha通道:如何使字體與Irrlicht半透明?

gui::IGUIFont* font = device->getGUIEnvironment()->getBuiltInFont(); 

font->draw(L"C'mon, be transparent, PLEASE!!!", 
      core::rect<s32>(130,10,300,50), 
      video::SColor(127,255,255,255)); 

正如你可以看到,文本應爲127的α值......但事實並非如此。

如何可以我繪製透明文本?

回答

2

我發現,如果我使用SOFTWARE驅動程序而不是OPEN_GL或DirectX,我也會得到您的問題。但是使用OpenGL或DirectX它可以正常工作。所以,如果它是一個選項,您可以選擇以下其中一種驅動程序:

video::E_DRIVER_TYPE driverType = video::EDT_OPENGL; 
video::E_DRIVER_TYPE driverType = video::video::EDT_DIRECT3D8; 
video::E_DRIVER_TYPE driverType = video::video::EDT_DIRECT3D9; 
+0

我正在使用Linux,所以DirectX驅動程序不是一個選項。 – 2010-08-03 20:53:57

+0

@George但OpenGL絕對應該。使用OpenGL渲染是否修復了透明度問題? – greatwolf 2010-09-02 18:49:11

1

解決方法很簡單。使用StaticText。就像這樣:

m_pText = m_pGUIEnvironment->addStaticText(
    "C'mon, be transparent, PLEASE!!!", 
    rect<s32>(130,10,300,50) 
); 
// Set your desired color with alpha value as OVERRIDE one. 
m_pText->setOverrideColor(SColor(127,0,0,0)); 
// And don't forget to enable it! 
m_pText->enableOverrideColor(true); 

Voela,現在你有半透明文本。順便說一句,我也認爲你正試圖在白色環境中使用白色文本。看看你的顏色 - 只要你不使用不同顏色的文字和背景,透明度就沒用了。無論如何,嘗試使用我的例子,如果一切都失敗了。