2010-07-07 86 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,现在你有半透明文本。顺便说一句,我也认为你正试图在白色环境中使用白色文本。看看你的颜色 - 只要你不使用不同颜色的文字和背景,透明度就没用了。无论如何,尝试使用我的例子,如果一切都失败了。