【问题标题】:How to make font semi-transparent with Irrlicht?如何使用 Irrlicht 使字体半透明?
【发布时间】:2010-07-07 00:56:24
【问题描述】:

我在绘制带有 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...但事实并非如此。

如何画出透明文字?

【问题讨论】:

    标签: alpha fonts irrlicht


    【解决方案1】:

    我发现如果我使用 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;
    

    【讨论】:

    • 我使用的是 Linux,所以 DirectX 驱动程序不是一个选项。
    • @George 但是 OpenGL 绝对应该是。使用 OpenGL 渲染解决了透明度问题吗?
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-13
      • 1970-01-01
      • 1970-01-01
      • 2011-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多