Как сделать шрифт полупрозрачным с помощью Irrlicht? - PullRequest
1 голос
/ 07 июля 2010

У меня проблемы с рисованием шрифта с альфа-каналом:

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 ]

2 голосов
/ 02 августа 2010

Я обнаружил, что если я использую ПРОГРАММНЫЙ драйвер вместо 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;
1 голос
/ 26 июля 2012

Решение простое.Используйте 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);

Воела, теперь у вас есть полупрозрачный текст.Кстати, я также думаю, что вы пытались использовать белый текст в белом окружении.Посмотрите на свой цвет - прозрачность бесполезна, если вы не используете разные цвета для текста и фона.В любом случае, попробуйте использовать мой пример, если ничего не помогает.

...