元記事:UI drawing recode



UI描画の再コーディング


UIのフロントバッファへの描画
インタフェイスツールtoolkitはすべてのその場の更新を(メニューやボタンを使用している間)フロントバッファへ描画していました。これはいくつかの改造コードも含め、クロスプラットフォームのサポートが上手くいかないため、一旦止めることにしました。

ボタンのリアルタイムの更新とメニューはバックバッファにのみ描画され、必要になればフロントバッファへコピーされるようになりました。現在フロントバッファへのアクセスにはglReadPixelsとglCopyPixelsのみ使用されています。これら二つのコールはOpenGL1.0から存在し、そして非常に多くのプラットフォームでサポートされていることが知られています。

再コーディングの他の恩恵は、フロントバッファへの更新の描画を一つのコールに集中できたことで、開発者によるプラットフォームに特化した最適な解決方法を実験することができることです。例えば、WindowsシステムのKTX OpenGL拡張もここで使用できるでしょう。これはDiscreetが3DSMaxのために拡張したもので、多くのゲームで使用されています。


現在は特に多くのトラブルをフロントバッファ描画に持つATIのカードについて、非常に心強い結果になっていますが、まだよく調べる必要があります。SGI/SUNのワークステーションではスムーズに動いているはずです(現在の方法はBlender1.0にも使用していました)が、フィードバックが欲しいです。いくつかの(古い)Linuxシステムはパフォーマンスが低下しているかもしれません。

「バックバッファからフロントバッファへコピー」を、"DisplayButtons"([F10])の"Rt"ボタンの値を"2"にすることによって他の方法に変更することができます。その後は、glCopyPixelsは使用されず、glReadPixelsとglDrawPixelsの組み合わせになります。


半透明メニュー


あンた、背景が透けてるぜまた、メニュー描画システムクリーニングの楽しい恩恵の一つとして、より進化したボタンのメニューの描画があります。ThemeエディタでMenu BackGroundとMenu Itemのアルファ値が定義できるようになり、UI内で半透明で表示できます。

半透明のUIの.B.blendをこちらでダウンロードできます。ファイルを読み込みもし気に入れば、[Ctrl]+[U]でスタートアップファイルに上書き(訳注:しちゃうと自分で設定したPATHとかが一気にパーになってしまうので、それが嫌な人用にThemeのpyファイルのzip(2,295バイト)を用意しました。解凍後、Scriptsフォルダなどに入れてScriptsWindowからScripts→Misc→alphaRoundedで実行後、[Ctrl]+[U]して下さい。ただし自己責任で)。


その他UI関連


- AAフォントがATiシステム上でゆがんでいました。現在AAフォントは正確なピクセルの位置に描画されています。AAフォント描画ライブラリも速くなりました。

- OSXのみ:AAフォントが.dfontと'Suitcase'のフォントもサポートされるように。

- Rounded Themeにアンチエリアスされたアウトラインをボタンを使用するように。

- プルダウンとポップアップメニューにかっこいいソフトシャドウがつきました。

- 新しいボタンタイプ'PULLDOWN'。プルダウンメニューと呼ばれるものです。現在すべてのデフォルトになっており、Themeに追加されるべきでしょう。

- 1つのウィンドウのスクリーンショット(Screendumps)を、Headerも含めた完全なウィンドウで行うように。Screendumpsは[Ctrl]+[F3](Blenderのスクリーン全体)もしくは[Shift]+[Ctrl]+[F3](一つのウィンドウのみ)で行います。OSXユーザは[Alt]も押す必要があります。

- Lampが作成されたとき、Lampタイプを選択するためのメニューが追加されました。

- OopsWindowのSchematic表示にそれぞれのノードをつなぐ曲線が追加されました。