1

我在绘制带有 alpha 通道的字体时遇到问题:

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));

如您所见,文本的 alpha 值应为 127……但事实并非如此。

如何绘制透明文本?

4

2 回答 2

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;
于 2010-08-02T09:01:48.210 回答
1

解决方法很简单。使用静态文本。像这样:

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

于 2012-07-26T19:33:08.147 回答