1

アルファチャンネルでフォントを描画するのに問題があります:

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 である必要がありますが、そうではありません。

透明なテキストを描画するにはどうすればよいですか?

4

2 に答える 2

2

OPEN_GL や DirectX の代わりに SOFTWARE ドライバーを使用すると、問題が発生することがわかりました。ただし、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 に答える